我写了2个代码来改变一些for循环中的数组 第一:
$numbers = range(0, sizeof($array_id)-1);
shuffle($numbers);
foreach ($numbers as $number) {
$arr = array("user" => array("id" => $array_id[$number], "name" => $array_name[$number], "key" => $array_key[$number]));
}
echo json_encode($arr);
这个有一个很大的问题,如果其中一个数组中的$number
等于5则不会循环将$number
的另一个结果放入其中数组,例如结果将是这样的:
{"user":{"id":["18","2","36"],"name":["alex","john"],"key":["159","228,"486,"852"]]}}
我的所有数组中都有5个值,你可以看到它有缺陷地返回它们。如果有人能告诉我为什么$number
通过shuffle和array获得范围内的最大值时,我会感激不尽获得$number
它的股票?
第二
function shuffle_assoc(&$array) {
if (shuffle($array)) {
return $array;
}else{
return FALSE;
}
}
for ($y=0; $y<sizeof($array_id); $y++) {
$arr = array("user" => array("id" => shuffle_assoc($array_id), "name" => shuffle_assoc($array_name), "key" => shuffle_assoc($array_key)));
}
echo json_encode($arr);
这个工作正常但是我希望id
和name
匹配我的意思是他们改变相同( if $ array_id [2] then array_name [2] )这就是为什么我写第一个代码的原因。如果有人知道如何让id
和name
洗牌,那么我会很感激。(对不起,如果我在我的写作中有错误,我的第一语言不是英语,但我喜欢英语:)
答案 0 :(得分:0)
我不确定我是否完全理解你,但是
$numbers = range(0, 5);
// $number = array(0, 1, 2, 3, 4, 5)
我的所有数组都有5个值
它的
$array_id[0]
$array_id[1]
$array_id[2]
$array_id[3]
$array_id[4]
所以你没有$ array_id [5]。我认为你需要$numbers = range(0, 4);
编辑:
再一次,我不确定你是否希望这种情况发生。
<?php
$array_id = array(1,2,3,4,5);
$array_name = array('a','b','c','d','e');
$numbers = range(0, 4);
shuffle($numbers);
$arr = array();
foreach ($numbers as $number) {
$arr["id"][] = $array_id[$number];
$arr["name"][] = $array_name[$number];
}
$arr2 = array("user" => array("id" => $arr["id"], "name" => $arr["name"]));
echo json_encode($arr2);
?>