【问题标题】:How do I retrieve a random value in multidimensional associative array?如何在多维关联数组中检索随机值?
【发布时间】:2015-01-15 10:44:40
【问题描述】:

我有一个数组,其中包含有关我发布的帖子的信息。

$DexArray = array(

            array(
            'url'       => "http://i.imgur.com/ObXLdd6C.jpg",
            'headline'  => "Dronningens Nytårstale",
            'subline'   => "Tallene bag talen og årets spilforslag",
            'href'      => "nytaarstale.php",
            'postedby'  => "kris",
            'postedurl' => "https://www.facebook.com/dataanalyticsdk",
            'dato'      => "21. december, 2014"
            ),

            array(
            'url'       => "http://i.imgur.com/sxddhOe.jpg",
            'headline'  => "Endless Jewelry",
            'subline'   => "Are there really endless possibilities?",
            'href'      => "endless.php",
            'postedby'  => "Nikolaj Thulstrup",
            'postedurl' => "kris",
            'dato'      => "10. december, 2014"
            ),

它存储在一个多维关联数组中。我正在尝试检索数组中的随机“href”值并将其存储为变量。

我尝试过使用 array_rand 函数,但它似乎不起作用。

$k = array_rand($DexArray);
$v = $array[$k]['href'];

我收到一条错误消息:未定义变量:此行中的数组“$v = $array[$k]['href'];”

你有解决办法吗?

【问题讨论】:

  • 错误很明显。你在某处定义了$array 吗?

标签: php arrays random multidimensional-array associative


【解决方案1】:

应该是

$k = array_rand($DexArray);
$v = $DexArray[$k]['href'];

【讨论】:

    【解决方案2】:

    这是一个工作调试 :) link 你的东西里有一个挥之不去的,$array 从一开始就没有被定义,所以这就是错误告诉你的原因。

    【讨论】:

      【解决方案3】:

      执行代码,它将从多维php数组中返回随机值。

      <?php
                  $filter_field = array();
                  $original_items = array(
                  array(1, 'stuff1', 'info1', 'response1', 'info1', 'response1'), array(2, 'stuff2', 'info2', 'response2', 'info2', 'response2'), array(3, 'stuff3', 'info3', 'response3', 'info3', 'response3'), array(4, 'stuff4', 'info4', 'response4', 'info4', 'response4'));
      
                  for ($x = 0; $x < sizeof($original_items); $x++) { 
                     array_push($filter_field, $original_items[$x][0]);
                  } 
      
                  shuffle($filter_field);
      
                  echo "<br/><br/><br/>";
      
                  for ($x = 0; $x < sizeof($original_items); $x++) { 
                  $k = $filter_field[$x];
                   for ($y = 0; $y < 5; $y++) {
                      echo $original_items[$k-1][$y];
                   }
                   echo "<br/><br/>";
                  }
                  ?>
      

      这是另一种返回随机数组索引的解决方案。

          $var = array(  
                      array("a", "one"),  
                      array("b", "two"),  
                      array("c", "three"),  
                      array("d", "four"),  
                      array("e", "five"),  
                      array("f", "six"),  
                      array("g", "seven")  
                  );  
                  // array_rand returns the INDEX to the randomly 
                  // chosen value, use that to access the array. 
                  $finalVar = $var[array_rand($var)];  
      
                  print_r($finalVar); 
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-09-25
        • 1970-01-01
        • 2016-03-28
        • 2020-04-16
        相关资源
        最近更新 更多