如何根据两列对数组项进行排序?

时间:2017-02-05 06:46:18

标签: php arrays sorting

我有一个总是包含10个项目的数组。我需要按照每5分钟排序一半。我不懂英语,我不能说出我想要的东西。好的,我们举一个例子:

$arr

我想像这样排序$expected_arr = array('one', 'six', 'two', 'seven', 'three', 'eight', 'four', 'nine', 'five', 'ten');

$expected_arr = array();
foreach( $arr as $key => $value ) {
    if ( $key  % 2 != 0 ) {
        $expected_arr[] = $value;
    }
}

这样做可能吗?

我想我需要这样的东西:

 $('.selectpicker').selectpicker({
    liveSearch: true
 });

5 个答案:

答案 0 :(得分:2)

假设您只是尝试重新排列索引,那么CODE非常简单:

$arr = array('one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine', 'ten');


$expected_arr = array();
for ($i=0; $i < 5 ; $i++) { 
    $expected_arr[] = $arr[$i];
    $expected_arr[] = $arr[$i+5];
}

我再次假设:

  1. 您的数组只有10个元素

  2. 您只想在0,1,2,3,4附近插入索引:5,6,7,8,9,以便新数组代表:

    $expected_arr[0] = $arr[0];

    $expected_arr[1] = $arr[5];

    $expected_arr[2] = $arr[1];

    $expected_arr[3] = $arr[6];

    ...

答案 1 :(得分:1)

试试这个简单而又甜蜜的,

$arr = array('one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine', 'ten');
$temp = [];
for($i = 0;$i < count($arr)-5;$i++){
   array_push($temp,$arr[$i],$arr[$i+5]);
}
print_r($temp);

试一试。这将有效。

答案 2 :(得分:0)

简单解决方案

    <?php
$arr = array('one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine', 'ten');
$split_arr = array_chunk($arr, 5);

$newArr = [];
foreach($split_arr[0] as $key => $val){
    $newArr[] = $val;
    $newArr[] = $split_arr[1][$key];
}
print_r($newArr);
?>

答案 3 :(得分:-1)

将您的10个项目数组分成两个独立的数组。 然后循环浏览5项,并将它们添加到新数组中。

示例:

// your array split to two new array.
$arr1 = array('one', 'two', 'three', 'four', 'five');
$arr2 = array('six', 'seven', 'eight', 'nine', 'ten');

$arrmerge = array(); // declare new empty array, used to join your new array

// itinerate through the 1st array, or 5 items (this only work if both new array have same size

for ($i=0; $i<count($arr1); $i++) 
{
   // store into new array, alternating, to achieve your needs
   $arrmerge[] = $arr1[$i];
   $arrmerge[] = $arr2[$i];
}

var_dump($arrmerge);
/*output
array(10) {
  [0]=>
  string(3) "one"
  [1]=>
  string(3) "six"
  [2]=>
  string(3) "two"
  [3]=>
  string(5) "seven"
  [4]=>
  string(5) "three"
  [5]=>
  string(5) "eight"
  [6]=>
  string(4) "four"
  [7]=>
  string(4) "nine"
  [8]=>
  string(4) "five"
  [9]=>
  string(3) "ten"
}
*/

答案 4 :(得分:-1)

array_sort($arr); //sorts the array,
$inc=(count($arr)/2);
for ($i = 1; $i <= $inc; $i++) { //run five times.
  $arrout[]=$arr[$i]; //add 1st value, (increment on loop)
  $arrout[]=$arr[($i+$inc)]; //add 6th value, (increment on loop)
}

unset($arr);
print_r($arrout);

未经测试但应该有效。 见http://php.net/manual/en/array.sorting.php

如果数组的大小不同,您可以按5

更改te (count($arr)/2)'

干杯

编辑:只要包含一定数量的值,就应该使用任何长度的数组。我知道你sai dit alwways alwways有10件但是你知道,可扩展:P