我想有条件地更改循环数组,尽管使用foreach循环,然后将var发送到
Url = domain.com/myphppage.php?myarray=$array1脚本有两个数组。此外,$_GET还用于从url获取var,最后使用foreach循环将两个数组之一输出到页面上的数组内容。
<?php
$array1 = array(1,2,3,4)
$array2 = array(5,6,7,8)
?>
<?php
$arrayused = $_GET['myarray'];
echo $arrayused;
?>
<?php foreach($arrayused as $item): ?>
some html code to show loop values
<?php endforeach; ?>var是由url传递的,因为它在页面上显示为echo $arrayused的输出。
我期望$arrayused变量也会被foreach拾取,并通过该变量中的两个数组中的任何一个进行循环。
但是,它不拾取变量,也不进入foreach循环。如果我将这两个数组名称中的任何一个硬编码到foreach语句中,那么foreach循环就能正常工作。
为什么foreach语句似乎没有“识别”从url检索的变量?它在循环之前的页面上打印,所以它显然是可用的?
发布于 2014-06-26 07:35:53
如果我正确理解- $arrayused是一个字符串,可以是'array1‘或’array1 2‘。
而不是将额外的$添加到变量的乞丐(可变变量)中。
下面是代码示例:
<?php
$array1 = array(1,2,3,4);
$array2 = array(5,6,7,8);
?>
<?php
$arrayused = 'array1';
echo $arrayused;
?>
<?php foreach($$arrayused as $item): ?>
some html code to show loop values
<?php endforeach; ?>发布于 2014-06-26 07:32:41
它不能工作,因为$_GET['myarray']是一个字符串,而不是变量,即使它有一个$,您必须指定一个变量,其中包含这个字符串作为名称。
因此,您可以像这样使用数组:
$arrayused = ${$_GET['myarray']};
foreach($arrayused as $item) {
// ...
}发布于 2014-06-26 07:30:19
用开关。
switch($_GET['myarray']) {
case '$array1':
$arrayused = $array1;
break;
case '$array2':
$arrayused = $array2;
break;
}https://stackoverflow.com/questions/24424692
复制相似问题