簡體   English   中英

PHP / Laravel多維數組

[英]PHP / Laravel multidimensional array

我想問的是-我正在某個庫存應用程序上工作,在該應用程序中,您可以擁有多個庫存,同時您可以在2個或更多不同的庫存中擁有一件商品。 因此存在問題。 我將項目數據保存到像這樣的數組中

 $cart[$data->resource_id] = array
 (
 'resID' => $data->resource_id,
 'stoID' => $data->stock_id,
 'stoName' => $data->sto_name,
 'resName' => $data->res_name,
 'actQuantity' => $data->quantity,
 'minimum' => $data->minimum,
 'quantity' => $quant
 );

但是我現在要做的是用2個索引(?)將數據保存到數組中。 第一個索引-resource_id,secound stock_id-所以我知道它是項目,然后是股票。 所以我覺得這樣

 $cart[$data->resource_id, $data->stock_id] = array
 (
 'resID' => $data->resource_id,
 'stoID' => $data->stock_id,
 'stoName' => $data->sto_name,
 'resName' => $data->res_name,
 'actQuantity' => $data->quantity,
 'minimum' => $data->minimum,
 'quantity' => $quant
 );

但其代碼顯然不正確。

你們對如何執行此操作有任何想法嗎?

非常感謝。

您可以通過$cart[$data->resource_id][$data->stock_id] ,因此無需使用逗號。 要設置值,您可以輸入

$cart[$data->resource_id][$data->stock_id] = [
   'stoName' => $data->sto_name,
   'resName' => $data->res_name
];

PHP多維數組:定義:

$cars =
    [
        ["Volvo", 22, 18,[2018,19,5]],
        ["BMW", 15, 13,[2018,10,2]],
        ["Saab", 5, 2,[2018,20,5]],
        ["Land Rover", 17, 1,[2018,19,6]]
    ];

采用:

echo $cars[0][0].": In stock: ".$cars[0][1].", sold: ".$cars[0][2].", manufactured(year): ".$cars[0][3][0].".<br>";
echo $cars[1][0].": In stock: ".$cars[1][1].", sold: ".$cars[1][2].", manufactured(year): ".$cars[0][3][0].".<br>";
echo $cars[2][0].": In stock: ".$cars[2][1].", sold: ".$cars[2][2].", manufactured(year): ".$cars[0][3][0].".<br>";
echo $cars[3][0].": In stock: ".$cars[3][1].", sold: ".$cars[3][2].", manufactured(year): ".$cars[0][3][0].".<br>";

在您的代碼中:

 $cart[$data->resource_id][$data->stock_id]

您可以如下創建數組。

$cart[$data->resource_id] = [ 
    $data->stock_id => [

        'resID' => $data->resource_id,
        'stoID' => $data->stock_id,
        'stoName' => $data->sto_name,
        'resName' => $data->res_name,
        'actQuantity' => $data->quantity,
        'minimum' => $data->minimum,
        'quantity' => $quant
    ] 
]

PHP不支持多維數組,至少不如您所願。

要在PHP上創建多維數組,必須使用嵌套數組:

$a = [
    "keyA" => [
        "keyB" => 'somedata';
    ]
]

因此,您需要初始化數組:

$cart = [];

$cart[$data->resource_id] = []; // Do this just in the first time that you insert something inside that `resource_id`, otherwise you will resetting the array.

$cart[$data->resource_id][$data->stock_id] = [
    //... your data here ...
]

例如,假設您要獲取以下數據:

$input = [
    [ 'id' => 1, 'stock_id' => 1, 'name' => 'foo' ],
    [ 'id' => 1, 'stock_id' => 2, 'name' => 'bar' ],
    [ 'id' => 1, 'stock_id' => 3, 'name' => 'biz' ],
]

並通過idstock_id對其進行組織。

您應該執行以下腳本:

$output =  [];

foreach ($input as $item) {
    if (!array_key_exists($item['id'], $output)) {
        $output[$item['id']] = []; // Initializing the 2nd level array
    }

    $output[$item['id']][$item['stock_id']] = $item;
}

$output數組看起來像這樣:

[
    1 => [
        1 => [ 'id' => 1, 'stock_id' => 1, 'name' => 'foo' ],
        2 => [ 'id' => 1, 'stock_id' => 2, 'name' => 'bar' ],
        3 => [ 'id' => 1, 'stock_id' => 3, 'name' => 'biz' ],
    ]
]

因此,您可以像這樣訪問數據:

echo $output[1][3]['name']
// Will output `biz`

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM