[英]Get item in array according to the value of a key within the item
假设我有一个这样的数组:
$myArray = [
[ 'id' => 1, 'name' => 'Some Name' ],
[ 'id' => 2, 'name' => 'Some Other Name ]
]
现在,如果想在不使用索引( $myArray[1]
)的情况下获取第二项,而是使用name
的值,即Some Other Name
,我该怎么做?
我不想只为一个值遍历整个数组,那么如何以一种我自己不显式遍历数组的方式编写它? 我查看了array_search()
,但找不到$myArray
包含其他数组作为项目的示例。
您可以使用array_filter()函数:
<?php
$myArray = [
['id' => 1, 'name' => 'Some Name'],
[
'id' => 2, 'name' => 'Some Other Name'
]
];
$filterData = array_filter($myArray, function ($data) {
return $data['name'] == "Some Other Name";
});
var_dump($filterData);
die;
?>
不完全确定您要做什么,但您可以在name
上索引数组:
echo array_column($myArray, null, 'name')['Some Other Name']['id']; //echos 2
做一次并可以访问所有name
:
$result = array_column($myArray, null, 'name');
echo $result['Some Other Name']['id']; // echos 2
echo $result['Some Name']['id']; // echos 1
这是最简单的解决方案:
$requiredItem = null;
foreach ($myArray as $item) {
if ($item['name'] === 'Some Other Name') {
$requiredItem = $item;
// `break` allows you to STOP iterating over array
break;
}
}
print_r($requiredItem);
所有其他解决方案将包括至少一次对您的阵列的完整循环。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.