Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/244.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP:将动态创建的变量传递给内置函数_Php_Function_Variables_Dynamic - Fatal编程技术网

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);