澳门新葡萄京官网注册php中怎么搜索相关联数组键值及获取之

1.搜索关联数组键 如果在一个数组中找到一个指定的键,函数array_key_exists()返回TRUE,否则返回FALSE。其

 

形式如下:
boolean array_key_exists(mixed key, array array)

一维数组搜索很简单in_array()

下面的例子将在数组键中搜索Ohio,如果找到,将输出这个州加入美国联邦政府的育关信息:
$state[“Delaware”]=”December 7,1787″;
$state[“Pennsylvania”]=”December 12, 1787″;
$state[“Ohio”]=”March l,1803″;
86 第5章数 组
if (array_key_exists(“Ohio”, $state》
printf(“Ohio joined the Union on %s”, $state[“Ohio”]);
结果如下:

如果 value 参数是字符串,且 type 参数设置为 true,则搜索区分大小写

2.搜索关联数组值 array_search()函数在一个数组中搜索一个指定的值,如果找到则返回相应的键,否则返回FALSE。

 代码如下

其形式如下:
下面的例子在$state中搜索一个特定的日期(December7),如果找到,则返回相应州的有关信息:
$state[“Ohio”] = “March l”; .
$statef”Delaware”l = “December 7”;
$state[“Pennsylvania”] = “December 12u;
$founded = array_search(“December 7”, $state),
i+ ($founded) printf(“%s was founded on %s.”, $founded,
$state[$founded]);
输出如下:
Delaware was十ounded on December 7.

<?php
$people = array(“Peter”, “Joe”, “Glenn”, “Cleveland”);

5.4.2获取数组键 array_keys()函数返回一个数组,其中包含所搜索数组中找到的所有键。其形式知下:
array array_keys(array array【J mixed search_value])
如果包含可选参数search
value,则只会返回与该值匹配的键。下面的例子将输出$state数组中
找到的所有键值:
$state[“Delaware”] = “December 7, 1787”;
$state[“Pennsylvania”] = “December 12, i787”;
$state[“New Jersey”] = “December 18, 1787”;
$keys = array_keys($state);
print_r($keys);
输出如下:

if (in_array(“Glenn”,$people))
  {
  echo “Match found”;
  }
else
  {
  echo “Match not found”;
  }
?>

5.4.3获取数组值 array_values()函数返回一个数组中的所有值,并自动为返回的数组提供数值索引。其形式如下:
array array_values(array array)

输出:

5.5遍历数组 87 下面的例子将获取$population中找到的各州人口数:
$population=array(“Ohio”=>”11,421,267”, “Iowa”=>”2,936,760”);
print_r(array_values($population》;
这个例子的输出如下:

Match found

5.5遍历数组 通常需要遍历数组并获得各个键或值(或者同时获得键和值),所以毫不奇怪,PHP为此提供了
一些函数来满足需求。许多函数能完成两项任务,不仅能获取当前指针位置的键或值,还能将指针移
向下一个适当的位置。本节将介绍这些函数。

 array_key_exists()函数

5.5.1 获取当前数组键 key()函数返回input_array中当前指针所在位置的键。其形式如下:
mixed key(array array)

 如果在一个数组中找到一个指定的键,函数array_key_exists()返回true,否则返回false。其形式如下:

下面的例子通过迭代处理数组并移动指针来输出$capitals数组的键:
$capitals=array(“Ohio”=>”Columbus”, “Iowa”=>”Des Moines”);
echo “<p>Can you name the capitals of these states?</p>”;
while($key=key($capitals》{
printf(“%s <br,>“,$key);
next($capitals);

将返回以下结果:
Ohio

boolean array_key_exists(mixed key,array array); 

下面的例子将在数组键中搜索apple,如果找到,将输出这个水果的颜色:

 代码如下

 
$fruit[“apple”] = “red”;
$fruit[“banana”] = “yellow”;
$fruit[“pear”] = “green”;
if(array_key_exists(“apple”, $fruit)){
 printf(“apple’s color is %s”,$fruit[“apple”]);
}

//apple’s color is red

 

array_search()函数

 array_search()函数在一个数组中搜索一个指定的值,如果找到则返回相应的键,否则返回false。其形式如下:

mixed array_search(mixed needle,array haystack[,boolean strict])

下面的例子在$fruits中搜索一个特定的日期(December
7),如果找到,则返回相应州的有关信息:

 代码如下

 
$fruits[“apple”] = “red”;
$fruits[“banana”] = “yellow”;
$fruits[“watermelon”]=”green”;
$founded = array_search(“green”, $fruits);
if($founded)
 printf(“%s was founded on %s.”,$founded, $fruits[$founded]);

//watermelon was founded on green.

 

array_keys()函数

 array_keys()函数返回一个数组,其中包含所搜索数组中找到的所有键。其形式如下:

 array array_keys(array array[,mixed search_value]) 

如果包含可选参数search_value,则只会返回与该值匹配的键。下面的例子将输出$fruit数组中找到的所有数组:

 代码如下

$fruits[“apple”] = “red”;
$fruits[“banana”] = “yellow”;
$fruits[“watermelon”]=”green”;
$keys = array_keys($fruits);
print_r($keys);

//Array ( [0] => apple [1] => banana [2] => watermelon )

 array_values()函数

 array_values()函数返回一个数组中的所有值,并自动为返回的数组提供数值索引。其形式如下:

array array_values(array array) 

下面的例子将获取$fruits中找到的各元素的值:

 代码如下

 
$fruits[“apple”] = “red”;
$fruits[“banana”] = “yellow”;
$fruits[“watermelon”]=”green”;
$values = array_values($fruits);
print_r($values);

//Array ( [0] => red [1] => yellow [2] => green )

上面讲到的都只是一维数组搜索了,如果要实现二维数据或多维数据我们可参考下面实例

1 php搜索多维数组的键值

如下面例子:

 代码如下

$foo[1][‘a’][‘xx’] = ‘bar 1’;
$foo[1][‘b’][‘xx’] = ‘bar 2’;
$foo[2][‘a’][‘bb’] = ‘bar 3’;
$foo[2][‘a’][‘yy’] = ‘bar 4’;
$foo[3][‘c’][‘dd’] = ‘bar 3’;
$foo[3][‘f’][‘gg’] = ‘bar 3’;
$foo[‘info’][1] = ‘bar 5’;

如果要查找 bar 3

怎么进行查找呢。有三个结果,而这三个结果都要,看下面的函数:

function array_search_re($needle, $haystack, $a=0,
$nodes_temp=array()){
global $nodes_found;
$a++;
foreach ($haystack as
$key1=>$value1) {
    $nodes_temp[$a] = $key1;
    if (is_array($value1)){  
      array_search_re($needle, $value1, $a, $nodes_temp);
    }
    else if ($value1 === $needle){
      $nodes_found[] = $nodes_temp;
    }
}
return $nodes_found;

}

这个函数就可以把上面要查找到的内容全部返回出键名来
$result = array_search_re(‘bar 3’, $foo);

print_r($result);

输出结果为如下:
Array ( [0] => Array ( [1] => 2 [2] => a [3] => bb
)
          [1] => Array ( [1] => 3 [2] => c [3] => dd
)
          [2] => Array ( [1] => 3 [2] => f [3] => gg
)
        )

php搜索多维数组的键名

 代码如下

function array_search_key($needle, $haystack){
global $nodes_found;

foreach ($haystack as $key1=>$value1) {
 
 if ($key1=== $needle){
 
  $nodes_found[] = $value1;
      
   }
    if (is_array($value1)){  
      array_search_key($needle, $value1);
    }
  
  
}

return $nodes_found;
}
$result = array_search_key(‘a’, $foo);

print_r($result);

输出结果为如下:
 

Array
(
    [0] => Array
        (
            [xx] => bar 1
        )

    [1] => Array
        (
            [bb] => bar 3
        )

    [2] => Array
        (
            [yy] => bar 4
        )

)

发表评论

电子邮件地址不会被公开。 必填项已用*标注