簡體   English   中英

PHP - 在特定鍵之前獲取先前數組元素的快速方法

[英]PHP - fast way to get previous array elements before specific key

如何在特定數組鍵之前獲取所有先前元素。

這是我的數組:

$key = 256;

$array = (
125 => array(571, 570), 
284 => array(567, 566),
256 => array(562, 560),
110 => array(565, 563),
);

現在我想要這樣的結果:

$array = (
125 => array(571, 570), 
284 => array(567, 566)
);

您可以遍歷並將值推送到newArray直到您按下要搜索的鍵:

$Key = 256;

$array = array(
"125" => array(571, 570), 
"284" => array(567, 566),
"256" => array(562, 560),
"110" => array(565, 563),
);

$newArray = [];

foreach($array as $key => $value) 
{   
  if($key == $Key) break;
  $newArray[$key] = $value;
}

print_r ($newArray); 
/*
=> Array ( 
    [125] => Array ( [0] => 571 [1] => 570 ) 
    [284] => Array ( [0] => 567 [1] => 566 ) 
   )
*/

首先使用array_search()array_keys()獲取鍵的數字索引。 然后使用array_slice()從頭開始將數組切片為鍵的索引

$index = array_search($key, array_keys($array)); // Get the numeric index of search key
$result = array_slice($array, 0, $index, true);  // Slice from 0 up to index

print_r($result); // Print result

您可以做以下奇怪的事情:

$key = 256;

$array = array(
    125 => array(571, 570), 
    284 => array(567, 566),
    256 => array(562, 560),
    110 => array(565, 563),
);

print_r(array_slice($array, array_search($key, array_keys($array)), null, true));

輸出

Array
(
    [256] => Array
        (
            [0] => 562
            [1] => 560
        )

    [110] => Array
        (
            [0] => 565
            [1] => 563
        )

)

UPDATE

現在,我意識到我再次回頭,我倒向了。 我稱dyslexic時刻...正確的做法是這樣的

print_r(array_slice($array, 0, array_search($key, array_keys($array)),true));
$position = array_search($key, array_keys($array));
$output = array_slice($array, 0, $position);
print_r($output);

演示: https : //3v4l.org/nmnDv

暫無
暫無

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

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