簡體   English   中英

從每個子數組中獲取特定元素

[英]Get specific element from each sub array

我有一個共同的模式,我確信在PHP中必須有一個內置的數組函數來處理,但只是看不到它。

我有多個數組,如下所示:

$testArray = array (
    'subArray1' => array(
        'key1' => "Sub array 1 value 1",
        'key2' => "Sub array 1 value 1"
    ),
    'subArray2' => array(
        'key1' => "Sub array 2 value 1",
        'key2' => "Sub array 2 value 2"
    )
);

我需要從每個subArray獲取key1值,其中可以有任何數字。

我總是最終只是循環遍歷每個數組以獲得所需的值,但我確信必須有一種更簡單,更有效的方法來處理它。

我目前正在使用以下簡單的foreach來解析數組:

$preparedSubs = array();

foreach($testArray as $subArray) {
    $preparedSubs[] = $subArray['key1'];
}

它盡可能短,但正如我所說,我確信有一個PHP結構可以更好地處理它。

在PHP 5.5之前,這將是最有效的解決方案:

$key = 'key1';

$output = array_map(function($item) use ($key) {
    return $item[$key];
}, $testArray);

從PHP 5.5開始,現在有一個array_column函數(參見COil的答案 )。

從PHP 5.5開始,您可以使用array_column()函數:

$key = 'key1';

$testArray = array (
    'subArray1' => array(
        'key1' => "Sub array 1 value 1",
        'key2' => "Sub array 1 value 2"
    ),
    'subArray2' => array(
        'key1' => "Sub array 2 value 1",
        'key2' => "Sub array 2 value 2"
    )
);

$output = array_column($testArray, $key);
var_dump($output);

將輸出:

array(2) {
  [0]=>
  string(19) "Sub array 1 value 1"
  [1]=>
  string(19) "Sub array 2 value 1"
}

與接受的答案的唯一區別在於您丟失了原始密鑰名稱,但我認為這不是您的問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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