PHP:将动态创建的变量传递给内置函数
问题描述:PHP:将动态创建的变量传递给内置函数,php,function,variables,dynamic,Php,Function,Variables,Dynamic,问题描述:我尝试将动态创建的变量从循环传递到php中的函数。更具体地说,我使用for循环来创建变量并将数据分配给它们。然后使用for循环将所有变量串在一起。然后将字符串传递给multisort_数组函数,并分解字符串以使用变量。我不确定我做错了什么 问题:在不知道要创建多少变量的情况下,如何将一组动态创建的变量传递给排序函数?那是我的德莱玛 代码: $arr2[0] = "100::HOMEDEPOT"; $arr2[1] = "200::WALMART"; $arr2[2] = "300::C
我尝试将动态创建的变量从循环传递到php中的函数。更具体地说,我使用for循环来创建变量并将数据分配给它们。然后使用for循环将所有变量串在一起。然后将字符串传递给multisort_数组函数,并分解字符串以使用变量。我不确定我做错了什么
问题:
在不知道要创建多少变量的情况下,如何将一组动态创建的变量传递给排序函数?那是我的德莱玛 代码:
$arr2[0] = "100::HOMEDEPOT";
$arr2[1] = "200::WALMART";
$arr2[2] = "300::COSTCO";
$arr2[3] = "400::WALGREENS";
$arr2[4] = "500::TACO BELL";
// explodes first value of $arr2
$tmp = explode("::",$arr2[0]);
// determines how many dynamic variables to create
for($k=0;$k<count($tmp);$k++){
${"mArr".$k} = Array();
}
// loops thru & assigns all numbers to mArr0
// loops thru & assigns all names to mArr1
for ($k=0;$k<count($arr2);$k++){
$tmp = explode("::",$arr2[$k]);
for($l=0;$l<count($tmp);$l++){
${"mArr".$l}[$k] = $tmp[$l];
}
}
// Will add a for loop to combine the variables into string
$param = "$mArr1,$mArr0";
// send the string to array_multisort to be sorted by name
// have tried the following options:
// 1. array_multisort(explode(",",$param));
// 2. call_user_func_array(array_multisort,explode(",",$param));
// both do not sort & give me an error.
$arr2[0]=“100::HOMEDEPOT”;
$arr2[1]=“200::沃尔玛”;
$arr2[2]=“300::好市多”;
$arr2[3]=“400::沃尔格林”;
$arr2[4]=“500::塔可钟”;
//爆炸$arr2的第一个值
$tmp=explode(“::”,$arr2[0]);
//确定要创建多少动态变量
对于($k=0;$k只需将数组本身传递到函数中
arraySort($array);
在将数组拆分为其他数组之前,请使用以下命令对数组进行排序:
$arr2[0]=“100::HOMEDEPOT”;
$arr2[1]=“200::沃尔玛”;
$arr2[2]=“300::好市多”;
$arr2[3]=“400::沃尔格林”;
$arr2[4]=“500::塔可钟”;
//在适当位置拆分输入,您还可以为此使用新数组
对于($i=0;$i
我想做的是:数组\u多重排序($mArr1、$mArr0、$mArr2、$mArr3);但我不知道我将拥有多少$mArr####。multisort将使用多维数组。与其从数组中生成字符串,不如将它们加载到另一个数组中。另外,您到底想做什么?这看起来非常混乱。无意冒犯,但我相信有更好的方法来完成您正在处理的任何事情。我已经尝试过了但实际情况是,它对数组进行排序,而不是数组中的数组。请参阅粗体部分的问题。这就是我试图解决的问题。好的,您在回答中间更改了问题…这不公平。如果您总是读取的数据有两个数组,则上面的代码将起作用。那么读取有两个数组的数据呢,三个数组,五个数组。你是如何处理的?你是制作一个单独处理每个数组的函数,还是我尝试创建一个可以通过动态创建变量来处理所有数组的函数。我遇到的问题是如何将这些动态创建的变量发送到multisort_数组()不知道我要发送多少。switch(count($tmp)){case 1:array_multisort($mArr0);break;case 2:array_multisort($mArr1,$mArr0,$mArr0);break;case 4:array_multisort($mArr1,$mArr2,$mArr3);break;case 5:array_multisort($mArr1,$mArr0,$mArr2,$mArr3,$mArr4);break;}echo json_encode($mArr1);//我不想这样做,而是想动态地组装一个要传递的动态变量列表。
$arr2[0] = "100::HOMEDEPOT";
$arr2[1] = "200::WALMART";
$arr2[2] = "300::COSTCO";
$arr2[3] = "400::WALGREENS";
$arr2[4] = "500::TACO BELL";
//Split the input in place, you could also use a new array for this
for($i = 0;$i < count($arr2);$i++)
{
$arr2[$i] = explode("::",$arr2[$i]);
}
//Define our new sorting function
function sort_second_item($a,$b)
{
return strcmp($a[1],$b[1]);
}
var_dump($arr2);
usort($arr2,'sort_second_item');
var_dump($arr2);
$rotated = array();
//Rotate $arr2
for($i = 0; $i < count($arr2); $i++)
{
for($j = 0;$j < count($arr2[$i]); $j++)
{
if(!isset($rotated[$j]))
{
$rotated[$j] = array();
}
$rotated[$j][$i] = $arr2[$i][$j];
}
}
var_dump($rotated);