在php变量中引用变量,然后再进行赋值的方法?

现在有两个变量,分别是$t和$s ,其中 $t的值在进行FOR循环时分别是1、2、3我想实现以下赋值。
$new1=$s
$new2=$s
$new3=$s
其中1、2、3是引用$t的值,但用了多种方法都发现不能成功引用并赋值.请帮助
上面的先不看,只看补充的内容。
有变量$t['typeid']、$t['view'],每次循环$t['typeid']的值都不一样,假设值分别为 10、21、38

我想写出
$view10=$t['view'];
$view21=$t['view'];
$view38=$t['view'];

的语句,那么在下面的FOR中应该怎么写?

for ($i = 1; $i <= 3; $i++) {

//这里应该怎么写

}

<?php
$t = array(1,2,3);
$s = 55;
for($i=0;$i<count($t);$i++){
   $n = "new".$t[$i];
   $$n = $s;
}
echo $new1,"<br />";
echo $new2,"<br />";
echo $new3,"<br />";

以上你直接拷贝运行,检验一下是不是你要的效果。

补充

$t = array("typeid"=>array(10,21,38),'view'=>10);
for($i=0;$i<count($t["typeid"]);$i++){
   $n = "view".$t["typeid"][$i];
   $$n = $t['view'];
}
echo $view10,"<br />";
echo $view21,"<br />";
echo $view38,"<br />";

 你要的效果需要连续用两个$。

温馨提示:内容为网友见解,仅供参考
第1个回答  2013-07-12

eval是最容易理解方式了。

$view10=$t['view'];
$view21=$t['view'];
$view38=$t['view'];


看一下代码,是否是你要达到的效果。

$t['view'] = 'testtest';
$ta = array(10,21,38);
foreach($ta as $v) {
    eval("\$view{$v} = \$t['view'];");
}

echo $view10;
echo $view21;
echo $view38;

本回答被网友采纳
第2个回答  2013-07-12


foreach($t['typeid'] as $v) {
    $v='view'.$v;
    ${$v} = $t['view'];
}
foreach($t['typeid'] as $v) {
    $v='view'.$v;
    echo $v." ".${$v}."<br/>";
}

可变变量····,你想要的应该是这个····

如果非得用for循环的话就下面这个:

$t['typeid']=array('10','21','38');$t['view']=10;
for($i=0;$i<3;$i++){
    $v=$t['typeid'][$i];
    $v='view'.$v;
    ${$v} = $t['view'];
}
for($i=0;$i<3;$i++){
    $v=$t['typeid'][$i];
    $v='view'.$v;
    echo $v." ".${$v}."<br/>";
}

第3个回答  2013-07-12
<?php
$t = array(1,2,3);
$s = 'xxx';
foreach($t as $v){
$new = 'new'.$v;
$$new = $s;
}
echo 'new1:'.$new1.'<br />';
echo 'new2:'.$new2.'<br />';
echo 'new3:'.$new3.'<br />';

不知道你说的是不是$$可变变量的应用。需求看的挺怪的。




<?php
$t['typeid'] = array(1=>10, 2=>21, 3=>38);
$t['view'] = 'xxx';
for ($i = 1; $i <= 3; $i++) {
$view = 'view'.$t['typeid'][$i];
$$view = $t['view'];
}

echo '$view10:'.$view10.'<br />';
echo '$view21:'.$view21.'<br />';
echo '$view38:'.$view38.'<br />';

第4个回答  2013-07-12
具体说说你想要什么功能追问

新变量赋值
$new1='xxxxx'
$new2='xxxxx'
$new3='xxxxx'

其中的1、2、3 要引用$t 的值,这个赋值的语句应该怎么写?我写的是
$new.$t='xxxxx' 好像不能用

第5个回答  2013-07-12
用&$符号 地址传递
第6个回答  2013-07-12
${"new".$t}='xxxxx';
没太看明白你的意思,不知道你要的是不是这个

php如何赋值
1、直接赋值:赋值符号“等于号”,赋值符号前面的是变量,后边的是赋的值;2、传递赋值:将一个表达式的值赋予一个变量,改变其中一个变量的值,不会影响到另一个变量的值;3、引用赋值:当新的变量引用了原始变量的值后,如果改变新的变量将影响到原始变量。

元格中的一个引用地址的一部分需要作为变量被赋值
offset函数,可以改变区域位置、大小。应该是最合适这个场景的函数了。另外用indirect+address也能实现,比较别扭一些。

php foreach循环完之后怎么重新赋值给变量?
foreach ($a as $b) { echo $b;c .= $b; \/\/ 将每个遍历的值追加到字符串变量中 } echo $c; \/\/ 输出追加操作使用的是字符串连接运算符 `.=`,它将当前字符串变量与要追加的字符串连接在一起。最后,我们使用 `echo` 语句输出重新赋值后的字符串变量 `$c`。

php 传值跟引用到底是怎么回事
如果是直接赋值,即$abc=$test;这时就会有一个新空间,存储的值也是aaaaa,并且$abc的地址指向这个新空间,这时$abc、$test两个变量的值相同,但他们相互不影响了,改变其中的一个值另外一个不影响,这就是传值。你这里是因为在引用之后才销毁的变量$test,这时变量$test不存在了,,但存储值aaaaa的...

php中echo和print都用于在输出数据而常用于给进行赋值
可以使用以下语句:```php$name = "John Doe"; \/\/ 使用赋值操作符进行赋值```在这种情况下,使用echo或print语句是不必要的,因为赋值操作符本身就具有输出功能。但是,在某些情况下,我们可能需要使用echo或print语句来输出变量的值,以便更好地控制输出的格式或添加额外的换行符等。

php中怎么把数组的多个变量组合之后赋值给另外一个变量?
cars=array("123","345","789");s="";\/\/遍历数组,并且把每一个数组和前一个结果组合。foreach ($cars as $k=>$v ){ s=$s.$v;} echo $s;结果显示 123456789

php的foreach使用&引用数组最后一个元素的 $value 引用在 foreach 循...
1. 第一个foreach循环,使用了&$value的写法,我们理解为指针变量,当循环结束后, 它指向的是数组中最后一个元素,即$arr[5],此时它的值为12.2. 第二个foreach循环,相当于每次循环都给$value进行赋值, 由于$value的引用没有释放, 那么就是间接的为arr[5]进行赋值,它每次的循环结果如...

thinkPHP中$this->assign("row",$row);这句话啥意思
1、在Action中赋值了一个myname模板变量:12$name = 'ThinkPHP';$this->assign('myname',$name);表示把Action中$name变量(其值为'ThinkPHP')赋值给模板变量myname,当然也可以是其他名字。2、在模板文件中使用myname变量:在模板文件(即对应的html文件)使用 {$myname} 即表示 字符串:'Think...

php 从 mysql 取值 为变量 赋值
sql语句:select 1 from tablename where col = col limit 1;然后读取语句执行所影响的行数。这里limit 1很重要,这样mysql找到一条记录后就不会在往下找了。这里执行所影响的行数不是0就是1,性能提高了不少。一般来说,如果数据库里的字段比较多,而你需要的字段比较少,那么 select * ...

php 使用use 和直接传参的区别
b = function ($x) use ($a) { a += $x; echo $a;};a = 10; \/\/ 这个变量被再次赋值, 但是在use语句中的'快照'是不会改变的 b(100); \/\/ 输出 : 105 实际应用 2 : 使用引用传值, 生成所use变量的指针, 下文再次调用闭包函数时, 快照变量会改变(其实这样做与直接传参已经没...

相似回答