如何手动洗牌for循环中的数组?
How to shuffle the arrays in for loop manually?
我写了 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 个值,您可以看到它返回了它们 defectively.I 如果有人能告诉我为什么 $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]) 这就是为什么我为这个写了第一个 code.anyway 如果有人知道如何使 id
和 name
洗牌相同我'我会很感激的。(抱歉,如果我在写作时有错误,我的第一语言不是英语,但我喜欢英语 :)
我不确定我是否完全理解你的意思,但是
$numbers = range(0, 5);
// $number = array(0, 1, 2, 3, 4, 5)
All of my arrays have 5 values
是
$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);
?>
我写了 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 个值,您可以看到它返回了它们 defectively.I 如果有人能告诉我为什么 $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]) 这就是为什么我为这个写了第一个 code.anyway 如果有人知道如何使 id
和 name
洗牌相同我'我会很感激的。(抱歉,如果我在写作时有错误,我的第一语言不是英语,但我喜欢英语 :)
我不确定我是否完全理解你的意思,但是
$numbers = range(0, 5);
// $number = array(0, 1, 2, 3, 4, 5)
All of my arrays have 5 values
是
$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);
?>