#php #arrays
Вопрос:
Как можно выбрать случайное значение с помощью PHP из массива?
Пример:
$trees = [
"appletree" => [
"id" => "12378",
"age" => [15],
"height" => [6]
],
"bananatree" => [
"id" => "344343453",
"age" => [16],
"height" => [30]
],
"peachtree" => [
"id" => "34534543",
"age" => [35],
"height" => [4]
];
Как бы я получил случайный доступ к одному из идентификаторов?
Я пробовал использовать
$tree_id = array_rand($trees['id']);
echo $tree_id;
echo "rn";
но я медленно натыкаюсь на стену понимания.
Комментарии:
1. Здесь нет
$trees['id']
. Там$trees['appletree']['id']
есть и$trees['bananatree']['id']
.2. Чего ты хочешь, так это
array_column($trees, 'id')
Ответ №1:
array_rand()
возвращает ключ случайного массива. Поэтому дайте ему $trees
массив, чтобы получить имя дерева, затем используйте его для индексации массива и доступа к его id
свойству.
$random_tree = array_rand($trees);
echo $trees[$random_tree]['id'];
Ответ №2:
может быть, эта функция, которую я создал, может помочь:
<?php
$trees = [
"appletree" => [
"id" => "123",
"age" => [15],
"height" => [6]
],
"bananatree" => [
"id" => "456",
"age" => [16],
"height" => [30]
],
"peachtree" => [
"id" => "789",
"age" => [35],
"height" => [4]
] // <- you were missing this bracket
];
function pickRand($array){
// Create Temp array
$temparray = [];
// Iterate through all ID's and put them into out temp array
foreach($array as $a) $temparray[] = $a['id'];
// Get a random number out of the number of ID's we have
$rand = rand(0, count($temparray) - 1);
// Return Result
return $temparray[$rand];
}
// Use Function
echo pickRand($trees);
Живая демонстрация: http://sandbox.onlinephpfunctions.com/code/e71dc6b07c3ec93051c69adc66b28aafe555a104