我有一个数组,值是从函数(或应该是)动态获得的,你可能会看到下面的例子。但看起来它并没有像预期的那样发挥作用。这种用法是错误的吗?
$products = array(
"saloon" => array(
array(
"id" => "23544",
"precise" => "unkown",
"pump" => "auto",
"density" => "5:3",
"name" => "Multi dose arranger",
"color" => "224,0,92",
"desc" => "....",
"cdate" => "12342315",
"support" => "#lab"
)// Goes like this.
)
),
"basic" => array(
//Goes on and on
),
"variable" => array(
)
);
array(
2=> array(
getProduct(16,"everyday"),
getProduct(24,"everyday")
),
3=> array(
getProduct(16,"everyday"),
getProduct(23,"everyday")
),
4=> array(
getProduct(16,"everyday"),
getProduct(24,"everyday")
)
);
function getProduct($id,$cat){
GLOBAL $products,$a;
// echo $a;
// print_r(is_array($products));
foreach ($products[$cat] as $product) {
if($product["id"]==$id){
$selectedProduct = $product;
break;
}
}
return $selectedProduct;
}
功能如上所述但是什么都没设置,打印数组也是空的。
答案 0 :(得分:0)
你做错了就是在你的函数中使用exit(它会停止整个脚本的执行)。您应该将您的功能更改为:
function getProduct($id,$cat){
global $products,$a;
// echo $a;
// print_r(is_array($products));
foreach ($products[$cat] as $product) {
if($product["id"]==$id){
return $product;
}
}
return false;
}
事实上,您不需要退出或休息,因为您可以在找到它时简单地返回$product
。如果您没有找到任何产品,您还应该返还价值。在上面的示例中,在这种情况下返回false
。
答案 1 :(得分:0)
更改您的功能:
function getProduct($id,$cat){
global $products,$a;
foreach ($products[$cat] as $product) {
if($product["id"]==$id){
$selectedProduct = $product;
break; //Instead of exit
}
}
return $selectedProduct;
}
不要使用exit
,因为您想要中断foreach的执行,而不是退出程序,而是使用break
。
编辑:通过@deceze
更正了退出功能的功能