是否有任何php函数,例如in_array,你可以通过mysql函数“mysql_fetch assoc”获得关联数组?
例如,如果我有一个如下所示的$数组:
array(0=>(array(ID=>1, name=>"Smith"), 1=>(array(ID=>2, name=>"John"))
我可以执行in_array(key,value,array)?
或者就我而言,如果我正在寻找ID值“1”,in_array("ID",1,$array)
。
这是我的解决方案,如果您认为这是正确的方式,请对其进行评论:
function in_assoc_array($key,$value,$array)
{
if (empty($array))
return false;
else
{
foreach($array as $a)
{
if ($a[$key] == $value)
return true;
}
return false;
}
}
答案 0 :(得分:30)
在你的情况下,我想知道简单地使用isset()是否更有意义,即
isset($a[$key])
答案 1 :(得分:10)
您不能直接在嵌套数组上执行此操作。您需要将其嵌套一点然后再进行操作。
<?php
$arr=array(0=>array('ID'=>1, 'name'=>"Smith"), 1=>array('ID'=>2, 'name'=>"John"));
foreach($arr as $arr1)
{
if(in_array(1,$arr1))
{
echo "Yes found.. and the correspoding key is ".key($arr1)." and the employee is ".$arr1['name'];
}
}
<强> OUTPUT :
强>
Yes found.. and the correspoding key is ID and the employee is Smith
答案 2 :(得分:9)
试试这个...... 您可以将此函数用于关联数组的任何深度。只是对这个函数的约束是键值不会重复在数组中的任何位置。
<?php
function is_in_array($array, $key, $key_value){
$within_array = 'no';
foreach( $array as $k=>$v ){
if( is_array($v) ){
$within_array = is_in_array($v, $key, $key_value);
if( $within_array == 'yes' ){
break;
}
} else {
if( $v == $key_value && $k == $key ){
$within_array = 'yes';
break;
}
}
}
return $within_array;
}
$test = array(
0=> array('ID'=>1, 'name'=>"Smith"),
1=> array('ID'=>2, 'name'=>"John")
);
print_r(is_in_array($test, 'name', 'Smith'));
?>
答案 3 :(得分:4)
首先,你必须知道你将在in_array
函数中用作haystack的关联数组的哪一部分。然后,您可以使用in_array
而无需其他代码。
值示例:
<?php
$assoc = array(1 => "apple", 2 => "banana", 3 => "lemon", 4 => "pear");
$haystack = array_values($assoc);
echo "<p>" . print_r($assoc, true) . "</p>";
$needle = 'banana';
$find = (in_array($needle, $haystack)) ? 'TRUE' : 'FALSE';
echo "<p>$needle : $find</p>";
$needle = 'cherry';
$find = (in_array($needle, $haystack)) ? 'TRUE' : 'FALSE';
echo "<p>$needle : $find</p>";
?>
结果:
Array ( [1] => apple [2] => banana [3] => lemon [4] => pear )
banana : TRUE
cherry : FALSE
答案 4 :(得分:3)
这是您可以使用的一种衬垫。
$isInArray = in_array(1, array_column($names, 'ID'));
答案 5 :(得分:0)
样本公式,使用类和方法:
class VerifyInArray
{
public function getMyCollection($field, $collection)
{
$list = array();
if (count($collection)) {
foreach ($collection as $k => $val) {
$list[] = $val[$field];
}
}
return $list;
}
public function inMyArray($collection, $field, $findValue)
{
if (isset($collection[0])) {
if (array_key_exists($field, $collection[0]) == false) {
return 'no';
}
}
if (in_array($findValue, $this->getMyCollection($field, $collection))) {
return 'ok';
}
return 'no';
}
public function displayInArray($collection, $attr, $value)
{
return 'search result: '. $this->inMyArray($collection, $attr, $value);
}
}
$src = new VerifyInArray();
$collection = array(
array(
'ID' => 1,
'name' => 'Smith'
),
array(
'ID' => 2,
'name' => 'John'
)
);
echo $src->displayInArray($collection, 'ID', 2). "\n<br>" .
$src->displayInArray($collection, 'ID', 0);
答案 6 :(得分:0)
语法
in_array(mixed $needle, array $haystack, bool $strict = false): bool
Needle 可以是混合类型,所以它可以是任何类型,无论是数字数组还是关联数组都没有问题。
in_array('foo',array_unique(array_keys($array)));