[英]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.