来自包含文件的函数中的foreach shuffle或array_rand()

时间:2013-11-24 11:07:04

标签: php arrays foreach shuffle

我有一个从包含文件获取数组的变量,我想在另一个文件中使用来自该数组的foreach,并让它显示我的数组中的随机ID。

这是我从包含文件中获得的数组。 (来自/products.php)

function get_all() {
$products = array();
$products[101] = array(
    "name" => "Red",
    "img" => "img-101.jpg",
    );
$products[102] = array(
    "name" => "Blue",
    "img" => "img-102.jpg",
    );
$products[103] = array(
    "name" => "Green",
    "img" => "img-103.jpg",
    );
foreach ($products as $product_id => $product) {
    $products[$product_id]["sku"] = $product_id;
}
return $products;
}

(来自display.php) 现在我想把products.php中的函数调用到变量中并让它通过foreach循环。这是我的代码。

 require_once include("products.php");

$random = function get_all();
$shuffle = shuffle($random);

foreach($shuffle as $product) { 
    echo $product["name"];
    echo $product["img"];
}

这是我尝试过的代码,但它继续吐出错误,说明变量未定义。

有人可以告诉我这里我做错了什么吗?以及如何解决它。

提前致谢

2 个答案:

答案 0 :(得分:0)

尝试使用,

$random = get_all();
shuffle($random);

foreach($random as $product) {
    echo $product["name"];
    echo $product["img"];
}

而不是

 $random = function get_all(); 
 $shuffle = shuffle($random);

答案 1 :(得分:0)

u_mulder向您显示实施错误

更改此

$shuffle = shuffle($random);

以下

shuffle($random);

注意此错误,请转到manual/shuffle并检查功能签名

bool shuffle ( array &$array )

此函数返回一个布尔值,并且会因为它作为引用传递而影响您的数组。其余的似乎应该工作