Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/263.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_Foreach - Fatal编程技术网

如何在PHP中重新构造多维数组?

如何在PHP中重新构造多维数组?,php,arrays,foreach,Php,Arrays,Foreach,我有一个如下所示的数组: array(3) { [0]=> array(2) { [0]=> string(10) "2012-11-14" [1]=> string(5) "3238" } [1]=> array(2) { [0]=> string(10) "2012-11-13" [1]=> string(5) "3231" } [2]=> array(2

我有一个如下所示的数组:

array(3) {
  [0]=>
  array(2) {
    [0]=>
    string(10) "2012-11-14"
    [1]=>
    string(5) "3238"
  }
  [1]=>
  array(2) {
    [0]=>
    string(10) "2012-11-13"
    [1]=>
    string(5) "3231"
  }
  [2]=>
  array(2) {
    [0]=>
    string(10) "2012-11-13"
    [1]=>
    string(5) "3231"
  }
$dates = array(
    array("2012-11-01", "3238"),
    array("2012-11-03", "4321")
);

print_r($dates);

$result = array();
foreach($dates as $value) {
    $result[][$value[0]] = $value[1];
}


print_r($result);
我想编写一个foreach循环,将此数组转换为:

array(2) {
  [0]=>
  array(1) {
    "2012-11-14" => "3238"
  }
  [1]=>
  array(1) {
   "2012-11-13" => "3231"
  }
因此,基本上,我想使用格式为Y-M-D date的数组元素作为数组中第二个元素的键

<?php

$data = array(
    array("2012-11-14", "3238"),
    array("2012-11-13", "3231"),
    array("2012-11-13", "3231") // warning! when there are two record with same date, the second's count will be display
);

$result = array();
foreach ($data as $value) {
    $result[$value[0]] = $value[1];
}

echo '<pre>';
print_r($result);
没有测试它,但像这样的东西在概念上应该是可行的。当然,将arrayVariable更改为您的变量。。但除此之外


没有测试它,但像这样的东西在概念上应该是可行的。当然,将arrayVariable更改为您的变量。。但除此之外。

给定以下数组

Array
(
[0] => Array
    (
        [2012-11-14] => 3238
    )

[1] => Array
    (
        [2012-11-13] => 3231
    )

[2] => Array
    (
        [2012-11-13] => 3231
    )

)
将其放入如下所示的新阵列:

array(3) {
  [0]=>
  array(2) {
    [0]=>
    string(10) "2012-11-14"
    [1]=>
    string(5) "3238"
  }
  [1]=>
  array(2) {
    [0]=>
    string(10) "2012-11-13"
    [1]=>
    string(5) "3231"
  }
  [2]=>
  array(2) {
    [0]=>
    string(10) "2012-11-13"
    [1]=>
    string(5) "3231"
  }
$dates = array(
    array("2012-11-01", "3238"),
    array("2012-11-03", "4321")
);

print_r($dates);

$result = array();
foreach($dates as $value) {
    $result[][$value[0]] = $value[1];
}


print_r($result);
生成此输出:

Array
(
    [0] => Array
        (
            [2012-11-01] => 3238
        )

    [1] => Array
        (
            [2012-11-03] => 4321
        )

)

我的答案并没有消除重复项,但原始问题中指定的添加维度意味着重复日期作为键不是问题。

给定以下数组

Array
(
[0] => Array
    (
        [2012-11-14] => 3238
    )

[1] => Array
    (
        [2012-11-13] => 3231
    )

[2] => Array
    (
        [2012-11-13] => 3231
    )

)
将其放入如下所示的新阵列:

array(3) {
  [0]=>
  array(2) {
    [0]=>
    string(10) "2012-11-14"
    [1]=>
    string(5) "3238"
  }
  [1]=>
  array(2) {
    [0]=>
    string(10) "2012-11-13"
    [1]=>
    string(5) "3231"
  }
  [2]=>
  array(2) {
    [0]=>
    string(10) "2012-11-13"
    [1]=>
    string(5) "3231"
  }
$dates = array(
    array("2012-11-01", "3238"),
    array("2012-11-03", "4321")
);

print_r($dates);

$result = array();
foreach($dates as $value) {
    $result[][$value[0]] = $value[1];
}


print_r($result);
生成此输出:

Array
(
    [0] => Array
        (
            [2012-11-01] => 3238
        )

    [1] => Array
        (
            [2012-11-03] => 4321
        )

)

我的答案并没有消除重复项,但原始问题中指定的添加维度意味着重复日期作为键不是问题。

您可以使用此代码获得所需的:

<?php
$original = array(
    array(
        "2012-11-14",
        "3238"
    ),
    array(
        "2012-11-13",
        "3231"
    ),
    array(
        "2012-11-13",
        "3231"
    )
);

$newArray = array();
foreach($original as $subArray){
    $newArray[] = array($subArray[0] => $subArray[1]);
}
var_dump($newArray);
输出将类似于请求的表单:

代码板演示:


然而,我个人更喜欢Aykut的解决方案。当有两条记录的日期相同时,您当然会遇到问题,但总体阵列布局要好一点

您可以使用此代码获取所需内容:

<?php
$original = array(
    array(
        "2012-11-14",
        "3238"
    ),
    array(
        "2012-11-13",
        "3231"
    ),
    array(
        "2012-11-13",
        "3231"
    )
);

$newArray = array();
foreach($original as $subArray){
    $newArray[] = array($subArray[0] => $subArray[1]);
}
var_dump($newArray);
输出将类似于请求的表单:

代码板演示:


然而,我个人更喜欢Aykut的解决方案。当有两条记录的日期相同时,您当然会遇到问题,但总体阵列布局要好一点

以下是我的想法:


以下是我的想法:


重复的日期键是否总是指向相同的值,如果不是,您如何选择?是的,它们总是指向相同的值!重复的日期键是否总是指向相同的值,如果不是,您如何选择?是的,它们总是指向相同的值!非常好用,谢谢!我会尽快接受它作为我的答案。显然,我需要等待3分钟。非常有效,谢谢!我会尽快接受答案,显然我需要等3分钟。