我有一个总是包含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
});
答案 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];
}
我再次假设:
您的数组只有10个元素
您只想在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
(count($arr)/2)
'
干杯
编辑:只要包含一定数量的值,就应该使用任何长度的数组。我知道你sai dit alwways alwways有10件但是你知道,可扩展:P