1

次のような配列があります。

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"
  }

この配列を次のように変換する foreach ループを書きたいと思います。

array(2) {
  [0]=>
  array(1) {
    "2012-11-14" => "3238"
  }
  [1]=>
  array(1) {
   "2012-11-13" => "3231"
  }

したがって、基本的には、YMD 日付としてフォーマットされた配列要素を、配列の 2 番目の要素へのキーとして使用したいと考えています。

4

5 に答える 5

2

次の配列が与えられます...

$array = array(
    0 => array(0 => "2012-11-14", 1 => "3238"),
    1 => array(0 => "2012-11-13", 1 => "3231"),
    2 => array(0 => "2012-11-13", 1 => "3231"),
);

次のような新しい配列に配置します。

$new_array = array();
foreach ($array as $key => $item)
{
    $new_array[$key][$item[0]] = $item[1];
}

print_r($new_array);

この出力を生成します:

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

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

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

)

私の答えは重複を取り除きませんが、元の質問で指定されたように追加されたディメンションは、キーとしての重複した日付は問題ではないことを意味します。

于 2012-11-14T15:58:16.087 に答える
2
<?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);
于 2012-11-14T15:52:42.230 に答える
0

このコードを使用して、必要なものを取得できます。

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

)

コードパッドのデモ: http://codepad.org/XAmUEdYh

しかし、私は個人的にAykutのソリューションを好みます。もちろん、同じ日付の2つのレコードがある場合は問題が発生しますが、全体的な配列レイアウトは少し優れています;)。

于 2012-11-14T15:58:58.923 に答える
0

これが私が思いついたものです:

<?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);
于 2012-11-14T16:01:50.227 に答える
0
<?php
    $newArray = array();
    for($i=0;$i<count($arrayVariable);$i++)
    {
       $newArray[$arrayVariable[$i][0]] = $arrayVariable[$i][1];
    }

echo '<pre>';print_r($newArray);echo '</pre>';
?>

それをテストしませんでしたが、このようなものは概念的に機能するはずです。もちろんarrayVariable、変数に変更します..しかし、それはさておき。

于 2012-11-14T15:55:17.683 に答える