【问题标题】:PHP - fast way to get previous array elements before specific keyPHP - 在特定键之前获取先前数组元素的快速方法
【发布时间】:2017-11-27 02:03:51
【问题描述】:

如何获取特定数组键之前的所有先前元素。

这是我的数组:

$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)
);

【问题讨论】:

  • 请再读一遍。它不能解决我的问题..
  • @MDAbubakar 请重新表述您的问题,您的意思是 before 给定键的元素吗?因为这就是你想要的结果。
  • 是的...我想在给定键之前获取元素
  • 这肯定是重复的。我会快速浏览一下。

标签: php arrays


【解决方案1】:

您可以遍历并将值推送到 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 ) 
   )
*/

【讨论】:

    【解决方案2】:

    首先使用array_search()array_keys()获取key的数字索引。然后使用 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
    

    【讨论】:

    • 那是我同样的想法,但我有一个阅读障碍的时刻,并以相反的方式做到了哈哈。
    【解决方案3】:

    你可以做这个奇怪的事情:

    $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
            )
    
    )
    

    更新

    我现在意识到我再看一遍,我是倒着看的。我打电话给dyslexic时刻……正确的做法是这样的

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

    【讨论】:

      【解决方案4】:
      $position = array_search($key, array_keys($array));
      $output = array_slice($array, 0, $position);
      print_r($output);
      

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-06-15
        • 2016-02-12
        • 1970-01-01
        • 2021-11-04
        • 2021-03-03
        • 2015-08-22
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多