我正在嘗試將 json 資料提取到相關的 php 頁面中。我有 json 中的產品資料和一個回圈通過它以在串列中顯示產品的 php 頁面,效果很好。單擊串列中的任何這些產品都會將我帶到其產品詳細資訊頁面(通過添加?product=<? $product['name'] ?>到 url,但我無法將正確的資料拉入此特定頁面。這是我的設定:
JSON檔案
{"products": [
{"name": "Banana","price": "$10"},
{"name": "Vodka","price": "$1"}
]}
用于產品串列的 PHP(作業正常)
<?php
$products_json = file_get_contents('assets/json/products.json');
$decoded_json = json_decode($products_json, true);
$products = $decoded_json['products'];
foreach($products as $product) {
?>
<p><?= $product['name']; ?></p>
<a href="product-detail.php?product=<?= $product['name']; ?>'">See Details</a>
<?php }?>
產品詳細資訊頁面的 PHP,一切都出錯了
$products_json = file_get_contents('assets/json/products.json');
$decoded_json = json_decode($products_json, true);
$product = $decoded_json['products'];
<h1>Product Name: <?= $product['name'] ?></h1>
<h1>Product Name: <?= $_GET['name'] ?></h1> //also tried this, but no luck
ps不要被我的聲譽分數所迷惑——那都是幾年前的事了,而且來自一個解釋引導程式3的好答案!
uj5u.com熱心網友回復:
$product是所有產品的陣列,而不是單個產品。您需要遍歷它以查找作為引數傳遞的產品的資訊。
$products_json = file_get_contents('assets/json/products.json');
$decoded_json = json_decode($products_json, true);
$products = $decoded_json['products'];
foreach ($products as $product) {
if ($product['name'] == $_GET['product']) { ?>
<h1>Product Name: <?= $product['name'] ?></h1>
Price: <?= $product['price'] ?>
<?php
break;
}
}
如果您有很多產品,最好將 JSON 設為以產品名稱為鍵的關聯陣列。或者使用資料庫而不是 JSON 檔案。
uj5u.com熱心網友回復:
當您在 product_detail 頁面中時,您可以使用以下方法獲取變數:
$_GET["product"]
因為在上一頁中,您使用以下方式發送它:
?product=<?= $product['name']; ?>
這是一個key-value引數,符號右邊=是變數名,左邊是值。
如果你想根據 json 檔案找到完整的產品,你可以像這樣過濾 $products 變數:
$products_json = file_get_contents('assets/json/products.json');
$decoded_json = json_decode($products_json, true);
$products = $decoded_json['products'];
$product = array_filter($products, function($p) {
return $p['name'] == $_GET["name"];
});
話雖如此,我建議id在 products 陣列中添加一個鍵,這樣更容易找到它,并且您不必處理 url 中的空格。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/468406.html
上一篇:PHP例外類中的反向級聯?
