Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
关联数组PHP随机值_Php_Arrays - Fatal编程技术网

关联数组PHP随机值

关联数组PHP随机值,php,arrays,Php,Arrays,我有一个关于php多维数组的任务 假设我有下表: Product Nr Img kat1 abc abc.png kat1 xyz xyz.png kat2 def def.png kat2 gfh gfh.png kat2 jug jug.png kat3 lkj lkj.png kat3 tfh tfh.png kat4 fsg fsg.png kat4 gzt gzt.png 构建一个数组,如: $table= array( a

我有一个关于php多维数组的任务

假设我有下表:

Product Nr  Img
kat1    abc abc.png
kat1    xyz xyz.png
kat2    def def.png
kat2    gfh gfh.png
kat2    jug jug.png
kat3    lkj lkj.png
kat3    tfh tfh.png
kat4    fsg fsg.png
kat4    gzt gzt.png
构建一个数组,如:

$table= array(
  array("Product" => "Kat1","Nr" =>"abc","IMG" =>"abc.png"),
  array("Product" => "Kat1","Nr" =>"xyz","IMG" =>"xyz.png"),
  array("Product" => "Kat2","Nr" =>"def","IMG" =>"def.png"),
  array("Product" => "Kat2","Nr" =>"gfh","IMG" =>"gfh.png"),
  array("Product" => "Kat2","Nr" =>"jug","IMG" =>"jug.png"),
  array("Product" => "Kat3","Nr" =>"lkj","IMG" =>"lkj.png"),
  array("Product" => "Kat3","Nr" =>"tfh","IMG" =>"tfh.png"),
  array("Product" => "Kat4","Nr" =>"fsg","IMG" =>"fsg.png"),
  array("Product" => "Kat4","Nr" =>"gzt","IMG" =>"gzt.png"),

  );
我想建立随机产品集。每个产品集应该包含来自每个kategorie的一个产品。例如,以下输出:

Kat1 = abc, abc.png
Kat2 = gfh, gfh.png
Kat3 = lkj, lkj.png
Kat4 = gzt, gzt.png

我不确定我是否走对了路,或者这种阵列是否可行。有什么办法可以解决这个问题吗?

您可以使用此mysql查询来获得所需的结果:

SELECT 
    *
FROM
    (SELECT 
        *
    FROM
        product
    ORDER BY RAND()) AS shuffled_products
GROUP BY PRODUCT;
使用循环在php中收到结果数组后,将其操纵到所需的结果。

1)尝试在视图中重建数组,如下所示(按类别分组):

以下代码将帮助您:

$table= array(
    array("Product" => "Kat1","Nr" =>"abc","IMG" =>"abc.png"),
    array("Product" => "Kat1","Nr" =>"xyz","IMG" =>"xyz.png"),
    array("Product" => "Kat2","Nr" =>"def","IMG" =>"def.png"),
    array("Product" => "Kat2","Nr" =>"gfh","IMG" =>"gfh.png"),
    array("Product" => "Kat2","Nr" =>"jug","IMG" =>"jug.png"),
    array("Product" => "Kat3","Nr" =>"lkj","IMG" =>"lkj.png"),
    array("Product" => "Kat3","Nr" =>"tfh","IMG" =>"tfh.png"),
    array("Product" => "Kat4","Nr" =>"fsg","IMG" =>"fsg.png"),
    array("Product" => "Kat4","Nr" =>"gzt","IMG" =>"gzt.png"),

);

$tableGroupByCats = [];
foreach ($table as $product) {
    $tableGroupByCats[$product['Product']][] = ["Nr" => $product["Nr"], "IMG" => $product["IMG"]];
}
或者,您可以使用GROUPBY从数据库中检索这样的数组

2) 获得您的结果:

$result = [];
foreach ($tableGroupByCats as $ctegory => $products) {
    $randNum = mt_rand(0, (count($products)-1));
    $result[$ctegory] = $products[$randNum];
}

下面是另一种方法:

代码:

可能的产出:

array (
  'Kat1' => 'Kat1 = xyz, xyz.png',
  'Kat2' => 'Kat2 = jug, jug.png',
  'Kat3' => 'Kat3 = lkj, lkj.png',
  'Kat4' => 'Kat4 = gzt, gzt.png',
)

您应该尝试自己编写代码。如果您有问题,请发布您尝试过的内容,并清楚解释哪些内容不起作用,然后提供。读一个好问题。一定要阅读,你能解释一下你到底想要什么吗?正如您提到的“Kat1=abc,abc.png”,不太清楚您的问题。@swapfile此查询未针对性能进行优化。希望你能处理好。而不是
*
只选择所需的列。
shuffle($table);
foreach($table as $row){
    $result[$row["Product"]]="{$row["Product"]} = {$row["Nr"]}, {$row["IMG"]}"; // overwrite duplicates
}
ksort($result);  // sort result array by Product ASC
var_export($result);
array (
  'Kat1' => 'Kat1 = xyz, xyz.png',
  'Kat2' => 'Kat2 = jug, jug.png',
  'Kat3' => 'Kat3 = lkj, lkj.png',
  'Kat4' => 'Kat4 = gzt, gzt.png',
)