Как получить случайное значение в многомерном ассоциативном массиве?

У меня есть массив, который содержит информацию о сообщениях, которые я сделал.

$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’];»

У вас есть решение для этого?

0

Решение

Так должно быть

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

Другие решения

Вот рабочая отладка 🙂 ссылка на сайт
Был затяжной , в твоей штуке А также $array изначально никогда не определялся, так что об этом и говорила ошибка.

0

Выполните код, он вернет случайное значение из многомерного массива 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);
0