簡體   English   中英

根據item中key的值獲取數組中的item

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM