如何检查值是否存在并在多维数组中返回给定值的完整行?
$userdb = Array
(
(0) => Array
(
'100',
'Sandra',
'urlof100'
),
(1) => Array
(
'5465',
'Stefanie',
'urlof5465'
),
(2) => Array
(
'40489',
'Michael',
'urlof40489'
)
);
例如。检查Sandra
是否在数组中。
是Sandra
在数组中,行是0
(0) => Array
(
'100',
'Sandra',
'urlof100'
)
我得到第一部分:
if (in_array("Sandra", array_column($userdb, 1))) {
// echo "FOUND";
}
但是我无法理解如何获得Sandra所属的阵列。
答案 0 :(得分:0)
OP的问题与PHP手册中的评论有着惊人的相似之处;见here。也就是说,您可以通过以下编码解决问题:
<?php
$userdb = [
[
'100',
'Sandra',
'urlof100'
],
[ '5465',
'Stefanie',
'urlof5465'
],
[ '40489',
'Michael',
'urlof40489'
]
];
function getRow($find,$db,$col){
$key = array_search($find, array_column($db, $col));
if ($key !== false) {
echo "Yes, \"$find\" is in array in row $key\n";
}
return $db[$key];
}
$row = getRow('Sandra',$userdb,1);
print_r($row);
请参阅live code
传递给array_column()的第二个参数是1,因为所有名称都存储在第1列中。一旦array_search()找到&#34; Sandra&#34;它返回行号。
如果您不知道列信息,可以同时获取行和列,如下所示:
<?php
array_walk($userdb, function($e,$i) {
if (in_array("Sandra",$e)) {
$k = array_search('Sandra',$e);
echo "Yes, \"Sandra\" is in array at row $i and column $k\n";
}
});
请参阅live code
使用array_walk()可以简化代码,使其更易于掌握。 Array_walk()将回调应用于数组的每个成员。
最后,您可以使用显式迭代来获取行信息,如下所示:
<?php
foreach($userdb as $k => $v) {
if (is_array($v) && in_array('Sandra',$v)) {
echo "Yes, \"Sandra\" in array at row $k\n";
}
}
请参阅live code
答案 1 :(得分:0)
你有一个多维数组。所以你可以使用foreach循环来获取密钥。像foreach($ array as $ key =&gt; $ val){ 如果找到echo $ key,请在此处查看数组 } 它应该工作。