Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/242.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 通过在奇数/偶数数字键上拆分数组,我做错了什么?_Php_Arrays_Split - Fatal编程技术网

Php 通过在奇数/偶数数字键上拆分数组,我做错了什么?

Php 通过在奇数/偶数数字键上拆分数组,我做错了什么?,php,arrays,split,Php,Arrays,Split,我无法将数组一分为二 Array ( [0] => livree [1] => 2011-12-26 [2] => livree [3] => 2011-12-27 [4] => livree [5] => 2011-12-28 [6] => livree [7] => 2011-12-29 [8] => livree [9] => 2011-12-30

我无法将数组一分为二

Array
(
    [0] => livree
    [1] => 2011-12-26
    [2] => livree
    [3] => 2011-12-27
    [4] => livree
    [5] => 2011-12-28
    [6] => livree
    [7] => 2011-12-29
    [8] => livree
    [9] => 2011-12-30
    [10] => livree
    [11] => 2011-12-31
    [12] => livree
    [13] => 2012-01-01
    [14] => livree
    [15] => 2012-01-02
    [16] => livree
    [17] => 2012-01-03
    [18] => en_cours
    [19] => 2012-01-04
    [20] => en_cours
    [21] => 2012-01-05
    [22] => en_cours
    [23] => 2012-01-06
    [24] => en_cours
    [25] => 2012-01-07
    [26] => en_cours
    [27] => 2012-01-08
)
我使用这些函数检测奇偶键,并将其拆分为两个不同的数组:

function odd($var){return($var & 1);}
function even($var){return(!($var & 1));}


$odd = array_filter($vb, "odd");
$even = array_filter($vb, "even");
我只有两个数组:

Array
(
    [0] => 2011-12-26
    [1] => 2011-12-27
    [2] => 2011-12-28
    [3] => 2011-12-29
    [4] => 2011-12-30
    [5] => 2011-12-31
    [6] => 2012-01-01
    [7] => livree
    [8] => livree
    [9] => en_cours
    [10] => en_cours
    [11] => en_cours
    [12] => en_cours
    [13] => en_cours
)



Array
(
    [0] => livree
    [1] => livree
    [2] => livree
    [3] => livree
    [4] => livree
    [5] => livree
    [6] => livree
    [7] => 2012-01-02
    [8] => 2012-01-03
    [9] => 2012-01-04
    [10] => 2012-01-05
    [11] => 2012-01-06
    [12] => 2012-01-07
    [13] => 2012-01-08
)
我做错了什么???谢谢你的帮助

for($i=0;$ifunction is_odd($num)
 {

    if ($num % 2 == 0)
        return false;
     else     
        return true;
}

$even_array=array();
$odd_rray=array(); 

foreach($array as $key=>$val)
{
    if(is_odd($key))
        array_push($odd_array,$val)
    else
        array_push($even_array,$val)
}

print_r($even_array);
print_r($odd_array);
$偶数[]=$yourarray[$i]; $odd[]=$yourarray[$i+1]; } //查看数组是否有偶数个元素,例如,如果它将有28个元素而不是27个元素,那么我们将错过循环中的第28个元素。所以我们必须检查它并将其添加到偶数数组中。 如果((sizeof($yourarray)%2)==0) $偶数[]=$yourarray[sizeof($yourarray-1)];
就这样

我不擅长PHP,但以下是我在C#中要做的事情(不使用LINQ):


有一些PHP实现,例如在。

array\u filter
向您传递值,而不是键。我无法理解为什么您会得到这些结果,但无论如何,您根本不需要阵列过滤器:

更快的方法:

$odd = $even = array();
for ($i = 0, $l = count($vb); $i < $l;) { // Notice how we increment $i each time we use it below, by two in total
    $even[] = $vb[$i++];
    $odd[] = $vb[$i++];
}
foreach (array_chunk($vb, 2) as $chunk) {
    $even[] = $chunk[0];
    $odd[] = $chunk[1];
}
…出于某种原因,我还认为您确实需要关联数组:

foreach (array_chunk($vb, 2) as $chunk) {
    $days[$chunk[1]] = $chunk[0];
}

作用于值,而不是键。您需要尝试其他方法,请查看并检查以下内容:您的示例数组和代码没有生成您显示的两个数组。您,我的朋友,rock!非常感谢。很好,谢谢你的帮助。我保留@sad_dude解决方案。再一次,谢谢你
object[] stringValues = input.Where((obj, index) => index % 2 == 0).ToArray();
object[] dateValues = input.Where((obj, index) => index % 2 == 1).ToArray();
$odd = $even = array();
for ($i = 0, $l = count($vb); $i < $l;) { // Notice how we increment $i each time we use it below, by two in total
    $even[] = $vb[$i++];
    $odd[] = $vb[$i++];
}
foreach (array_chunk($vb, 2) as $chunk) {
    $even[] = $chunk[0];
    $odd[] = $chunk[1];
}
foreach (array_chunk($vb, 2) as $chunk) {
    $days[$chunk[1]] = $chunk[0];
}