Tôi có một mảng kết hợp trong PHP và muốn chọn cặp khóa/giá trị ngẫu nhiên trong số đó. Dưới đây là những gì tôi có cho đến thời điểm này:Chọn một phần tử ngẫu nhiên từ một mảng kết hợp PHP
Khởi tạo.
$locations = array();
Loops thông qua một truy vấn SQL và thêm chìa khóa/cặp val:
array_push($locations, "'$location_id' => '$location_name'");
Sau đó, tôi chọn một chỉ số ngẫu nhiên của mảng:
$rand = array_rand($locations);
Rand chỉ là một con số . Vì vậy, vị trí [$ rand] mang lại cho tôi một cái gì đó như:
'1' => 'Location 1'
OK, một phần tử mảng assoc. Tại thời điểm này, tôi không biết chìa khóa của mảng assoc này, vì vậy tôi đã thử những điều sau đây:
foreach($locations[$rand] as $loc_id => $location_name) {
echo "$key : $value<br/>\n";
}
$loc_id, $location_name = each($locations[$rand]);
$location_name = $locations[key($rand)];
Không ai trong số 3 lần thử này hoạt động. Tất cả đều ném lỗi như "Biến đã qua không phải là mảng".
Tôi chắc chắn có một số lớp lót đơn giản 1 có thể lấy một cặp khóa/giá trị ngẫu nhiên từ mảng. Hoặc cú pháp của tôi bị tắt. Tôi thực sự đánh giá cao sự giúp đỡ.
Vấn đề của bạn nằm trong 'array_push ($ locations," '$ location_id' => '$ location_name' ") ; '. Thực hiện việc này thay vào đó: '$ locations [$ location_id] = $ location_name;'. Sau đó 'array_rand ($ location)' sẽ trả về một '$ location_id' ngẫu nhiên; và bạn có thể lấy tên với '$ name = $ locations [$ location_id]'. – arnaud576875
bạn là tất cả chính xác, tất nhiên - tôi chỉ chọn một bc tôi làm việc tốt nhất với mã ví dụ. và vâng, tôi khá xấu hổ về sự thúc đẩy không chính xác. tôi mã một tấn trong perl (w băm) vì vậy tôi nên biết rõ hơn! CẢM ƠN BẠN! – Jeff
đẹp, bạn đã lưu ngày của tôi – RezaSh