我有一个如下所示的数组:
Array
(
[0] => Array
(
[Product] => Amazing Widget
[Value] => 200
)
[1] => Array
(
[Product] => Super Amazing Widget
[Value] => 400
)
[2] => Array
(
[Product] => Promising Widget
[Value] => 300
)
[3] => Array
(
[Product] => Superb Widget
[Value] => 400
)
)
我相信它是一个嵌套的多维数组。
无论如何,我正在尝试检测数组中是否已存在产品名称。这就是我要做的事情
if('Super Amazing Widget' is in the array) {
echo 'In the Array';
}
我试过这个:
if(in_array('Super Amazing Widget', $array)){
echo 'In The Array';
}
但它没有用,我找不到原因。
编辑:
这里的一些功能非常有效:in_array() and multidimensional array
答案 0 :(得分:5)
in_array
不会进行递归搜索,即在子数组中搜索。您需要循环遍历阵列并手动检查您的值。
$found = false;
foreach($arr as $item) {
if ($item['Product'] == 'Super Amazing Widget') {
$found = true;
break;
}
}
if ($found)
echo 'found!'; //do something
<强> Live example 强>
答案 1 :(得分:0)
foreach ($array as $item) {
if ($item["Product"] == "Super Amazing Widget") {
echo "in the array";
break;
}
}
答案 2 :(得分:0)
这不使用循环:
$filt = array_filter($array, create_function('$val',
'return $val["Product"] === "Super Amazing Widget";'));
if (!empty($filt)) {
echo "In The Array\n";
}
答案 3 :(得分:0)
使用类似于上一个答案的array_filter,但使用较新的匿名函数而不是旧的create_function():
if(array_filter(
$array,
function($val) { return $val['Product'] === 'Super Amazing Widget'; }
)) {
echo 'In the array' . PHP_EOL;
}