我想将两个不同的PHP标记转换为一个PHP标记。这听起来有些怪异,但最近我发现了一个类似的问题,并用正确的标记回答了。
我找不到当前丢失的地址。
我的问题:
例如;
$gates = array('t1','t2','t3',t4','t5');
$openGates->
和$gates
合并。
结果:
$openGates->t1;
或t2,t3。
如果我没记错的话,我以前发现的问题的答案是;
$openGates->{$gates};
这样。我不确定
我该怎么做?
答案 0 :(得分:0)
这不是为新手程序员...
简单起初:
$gates = array('t1','t2','t3','t4','t5');
是数组
$openGates->
这是类实例。顺便说一句。您可以检索类似$className->varName
您不能简单地合并数组和类实例。但是您可以循环创建新的类实例变量。
foreach($gates as $gateKey=>$gateVal) {
$openGates->$gatesVal = NULL;
}
但是我认为是这样,结果应该是这样的:
$gates = array('t1'=>'opened','t2'=>'closed','t3'=>'closed','t4'=>'opened','t5'=>'opened');
foreach($gates as $gateKey=>$gateVal) {
$openGates->$gateKey = $gateVal;
}
echo $openGates->t1;
// or
foreach($gates as $key=>$val) {
echo $openGates->$key.PHP_EOL;
}
您可以简单地设置$openGates->gates = $gates;
并将其命名为echo $openGates->gates['t1'];
答案 1 :(得分:0)
您似乎在将对象与数组混淆。数组仅包含数据,除非您也使用键创建它们。如:
$gates = array('t1'=>true,'t2'=>false,'t3'=>"maybe",'t4'=>0,'t5'=>50);
Matthew Page是正确的,因为您应该查找PHP OOP来寻求解决方案。
话虽如此,您可以将数组转换为具有键和值的对象:
$gates = (object) array('t1'=>true,'t2'=>false,'t3'=>"maybe",'t4'=>0,'t5'=>50);
或
$openGates = (object) $gates;
这将允许您以演示的方式访问对象的“属性”:
例如, echo $openGates->t1;
。 ->
运算符仅适用于对象,它们是类的实例,而不是数组。
如果你投你的数组类型的对象的,请确保您有两个键和值。