从数组中的不同索引值中获取值
fetch values from different index value in array
我有一个数组,我希望通过它获取值并将它们存储在数据库中。
Array
(
[success] => 1
[products] => Array
(
[0] => Array
(
[id] => 373
[categories] => Array
(
[0] => 1
[1] => 15
[2] => 28
)
)
[1] => Array
(
[id] => 210
[categories] => Array
(
[0] => 15
[1] => 28
)
)
[3] => Array
(
[id] => 209
[categories] => Array
(
[0] => 15
[1] => 28
[2] => 15
)
)
)
)
)
我已经获取了所有数据,但现在我在获取类别时遇到问题。我有table谁的观点是这样的
id prod_id prod_name product_catid product_subcatid
在此数组中,值 15 代表 product_catid,28 代表 product_subcatid。
我用来获取值的部分代码是,
if (!empty($array))
{
foreach ($array['products'] as $product)
{
if(isset($product['categories']))
{
$product_catid = $product['categories'][1];
$product_subcatid = $product['categories'][2];
$inserts1 = mysql_query("insert into product_category(prod_id,prod_name,product_catid,product_subcatid,product_subsubcatid) values ('".$idd."','".$product_name."','".$product_catid."','".$product_subcatid."','".$product_subsubcatid."')");
$posts[0]['message'] = 'Registered';
}
}
}
但问题出在第二个数组中,即 [1],product_catid 的值已转移到 [0] 索引值,product_subcatid 已转移到 [1] 索引值。
现在我被卡住了,无法理解我应该如何获取和存储值。将不胜感激。
如果您的 subcat
总是落在最后,而 cat
会紧随其后,只需使用 array_pop
而不是明确指向它。粗略示例:
if (!empty($array)) {
foreach ($array['products'] as $k => $product) {
if(isset($product['categories'])) {
$product_subcatid = array_pop($product['categories']);
$product_catid = array_pop($product['categories']);
$db = new PDO('mysql:host=localhost;dbname=database_name', 'username', 'password');
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$insert = $db->prepare('INSERT INTO product_category (prod_id,prod_name,product_catid,product_subcatid,product_subsubcatid) VALUES (?, ?, ?, ?, ?)');
$insert->execute(array($idd, $product_name, $product_catid, $product_subcatid, $product_subsubcatid));
}
}
}
另一种方法是将其反转:
$product['categories'] = array_reverse($product['categories']);
$product_subcatid = $product['categories'][0];
$product_catid = $product['categories'][1];
另一种解决方案:
$product_subcatid = end($product['categories']);
$product_catid = prev($product['categories']);
这样你就不会修改数组。
我有一个数组,我希望通过它获取值并将它们存储在数据库中。
Array
(
[success] => 1
[products] => Array
(
[0] => Array
(
[id] => 373
[categories] => Array
(
[0] => 1
[1] => 15
[2] => 28
)
)
[1] => Array
(
[id] => 210
[categories] => Array
(
[0] => 15
[1] => 28
)
)
[3] => Array
(
[id] => 209
[categories] => Array
(
[0] => 15
[1] => 28
[2] => 15
)
)
)
)
)
我已经获取了所有数据,但现在我在获取类别时遇到问题。我有table谁的观点是这样的
id prod_id prod_name product_catid product_subcatid
在此数组中,值 15 代表 product_catid,28 代表 product_subcatid。
我用来获取值的部分代码是,
if (!empty($array))
{
foreach ($array['products'] as $product)
{
if(isset($product['categories']))
{
$product_catid = $product['categories'][1];
$product_subcatid = $product['categories'][2];
$inserts1 = mysql_query("insert into product_category(prod_id,prod_name,product_catid,product_subcatid,product_subsubcatid) values ('".$idd."','".$product_name."','".$product_catid."','".$product_subcatid."','".$product_subsubcatid."')");
$posts[0]['message'] = 'Registered';
}
}
}
但问题出在第二个数组中,即 [1],product_catid 的值已转移到 [0] 索引值,product_subcatid 已转移到 [1] 索引值。 现在我被卡住了,无法理解我应该如何获取和存储值。将不胜感激。
如果您的 subcat
总是落在最后,而 cat
会紧随其后,只需使用 array_pop
而不是明确指向它。粗略示例:
if (!empty($array)) {
foreach ($array['products'] as $k => $product) {
if(isset($product['categories'])) {
$product_subcatid = array_pop($product['categories']);
$product_catid = array_pop($product['categories']);
$db = new PDO('mysql:host=localhost;dbname=database_name', 'username', 'password');
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$insert = $db->prepare('INSERT INTO product_category (prod_id,prod_name,product_catid,product_subcatid,product_subsubcatid) VALUES (?, ?, ?, ?, ?)');
$insert->execute(array($idd, $product_name, $product_catid, $product_subcatid, $product_subsubcatid));
}
}
}
另一种方法是将其反转:
$product['categories'] = array_reverse($product['categories']);
$product_subcatid = $product['categories'][0];
$product_catid = $product['categories'][1];
另一种解决方案:
$product_subcatid = end($product['categories']);
$product_catid = prev($product['categories']);
这样你就不会修改数组。