2017-08-25 70 views
0

说我有$ exampleVariable,我想要打印。 $ exampleVariable可能是一个数组,在这种情况下,我设置了这个数组来获得正确的数组元素,然后我可以用print $exampleVariable[$i]进行打印。如何在PHP中打印一个变量,它是数组中的一个元素,或者是整个变量(如果它不是数组)

if ($_GET) { 
    $i = array_search($_GET["exampleQueryString"], $exampleVariable); 
} elseif (is_array($exampleVariable)) { 
    $i = 0; 
} else { 
    $i = ""; 
} 

我的问题是,去年else,如果$ exampleVariable不是一个数组,因为那时我得到print $exampleVariable[]不工作。那么有什么我可以把$作为我打印整个变量?

或者,我考虑在$ i中包含括号,所以我会举例如$i = [0];,但在这种情况下我不知道如何打印它。 $exampleVariable$i肯定不会工作。

我有很多变量,除了$ exampleVariable之外,我需要打印,所有的都使用相同的$ i或缺少,所以我不想做任何longwinded来设置每个单独的。

这听起来比我觉得它应该更复杂,所以希望它是有道理的!

+0

为什么有一个关于变量是数组或一个〜应变歧义G?我建议将您的数据清理并转换为一致的结构。然后,只有这样,才会将其输出给用户。如果发现很多类型检查是代码异味。 – k0pernikus

回答

1

你总是可以做一个漂亮的事情,被称为类型铸造。这意味着,你总是可以通过(array)使变量数组即使它不是,在前面加上它的名字:

$exampleVariable = (array)$exampleVariable; 

所以你不需要三个if分支都:

if ($_GET) {  
    $i = array_search($_GET["exampleQueryString"], $exampleVariable); 
} else { 
    $i = 0; 
    $exampleVariable = (array)$exampleVariable; 
} 
+0

在你最后的括号里有错字:'(array($ exampleVariable;' – SeanKendle

+0

非常棒,谢谢你! – Eriyu

1

你可以应用(array)投,如果目标已经是一个数组,它不会有任何效果:

$i = array_search($_GET["exampleQueryString"], (array)$exampleVariable); 
相关问题