簡體   English   中英

php循環遍歷數組 - 輸出數組值和鍵

[英]php loop through array within array - output array value and key

我有以下數組結構,我必須保留,因為它是一個現有的網站:

$label_options = array(
    "label_size" => 'A4',
    "label_position" => 'Top',
    "label_qty" => 50
);

$ink_options = array(
    "black" => 1,
    "colour" => 0
);

$item = array(
    "item_number" => 12546518,
    "item_type" => 'Canon',
    "item_label_options" => $label_options,   
    "item_ink_options" => $ink_options,
    "item_qty" => 2,      
    "item_price" => 13.99,
    "item_total" => 26.98,
    "item_delivery" => 2.49
);

if (isset($_SESSION['cart'])) {
    $_SESSION['cart'][$unique] = $item;
} else {
    $_SESSION['cart'] = array($unique => $item);
}

我現在希望能夠輸出數組內部的值和數組中的數組。 我可以使用以下內容:

foreach ($_SESSION['cart'] as $unique => $item) {
    print 'Item Number = '.$item['item_number'].'<br />';
    print 'Qty = '.$item['item_qty'].'<br />';
    print 'Price = '.$item['item_price'].'<br />';

    foreach ($item['item_label_options'] as $key => $option) {
       print $option['label_size'].'<br />';
       print $option['label_position'].'<br />';
       print $option['label_qty'].'<br />';
    }
}

哪個成功輸出第一個循環而不是第二個循環 - 只需輸入每個循環的第一個字母:

Item Number = 12546518
Qty = 1
Price = 7.99

A // should be A4
T // should be Top
5 // should be 50

還有一種方法,我可以循環和輸出所有的值,而不必實際寫'Item Number = ...它可以只輸出每個鍵的值,因為我不會總是知道每個鍵的名稱是多少是?

在內部foreach循環中,鍵label_sizelabel_positionlabel_qty不存在。 當一個鍵不存在時,我猜它默認為0,因此只給你第一個字母。 這將產生你想要的東西:

foreach ($_SESSION['cart'] as $unique => $item) {
    print 'Item Number = '.$item['item_number'].'<br />';
    print 'Qty = '.$item['item_qty'].'<br />';
    print 'Price = '.$item['item_price'].'<br />';
    foreach ($item['item_label_options'] as $key => $option) {
       print $option.'<br />';
    }
}

為什么不打印$ key和$ value,這應該打印你想要的: http//jp1.php.net/manual/de/control-structures.foreach.php

您錯誤地訪問$ _SESSION ['cart']中的$ label_options數組。 內...

foreach ($item['item_label_options'] as $key => $option) {
   print $option['label_size'].'<br />';
   print $option['label_position'].'<br />';
   print $option['label_qty'].'<br />';
}

... $ option是數組值 ,而不是數組本身 您可以通過回顯$ key和$選項輕松驗證這一點。 當你嘗試打印$ option ['label_qty']時,PHP基本上將字符串視為數組,為您提供第一個字母。

您可以使用鍵訪問項目:

foreach ($_SESSION['cart'] as $unique => $item) {
    echo 'Item Number = '.$item['item_number'].'<br />';
    echo 'Qty = '.$item['item_qty'].'<br />';
    echo 'Price = '.$item['item_price'].'<br />';
    echo $item['item_label_options']['label_size'];
    echo $item['item_label_options']['label_position'];
    echo $item['item_label_options']['label_qty'];
}

暫無
暫無

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

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