2014-12-27 4 views
-3

Я тестирую вещи в php, и я нашел странную вещь в ожидаемом результате.Неупорядоченное эхо в php

Это программа, которую я использовал:

<?php 
$tags = $_GET['tags']; 
$uid = $_GET['uid']; 
$langs = $_GET['langs']; 
echo var_dump($tags).$uid.var_dump($langs); 
?> 

И просьба:

myfile.php?tags[]=IT&tags[]=CS&uid=userIdent&langs[]=basque&langs[]=spanish 

И результат:

array(2) { [0]=> string(2) "IT" [1]=> string(2) "CS" } array(2) { [0]=> string(6) "basque" [1]=> string(7) "spanish" } userIdent 

Я не понимаю, почему UID ISN» t эхо между двумя функциями var_dump

ответ

1

var_dump() не возвращает строку, она делает свой собственный выход. Весь аргумент echo оценивается до echo. Так что ваше утверждение эквивалентно:

$temp1 = var_dump($tags); 
$temp2 = $uid; 
$temp3 = var_dump($langs); 
echo $temp1.$temp2.$temp3; 

С var_dump() ничего, $temp не возвращается и $temp2 будет пустым. Так что это на самом деле эквивалентно;

var_dump($tags); 
var_dump($langs); 
echo $uid; 
1

эхо не собирается эхо из $uid, вместо этого он будет пытаться выводить результат var_dump который я считаю void

Вы, наверное, хотите:

var_dump($tags); 
echo $uid; 
var_dump($langs); 

но var_dump обычно используется для отладки, а не окончательный результат

1

Вы связываете с возвратными значениями от var_dump с $uid. Поскольку var_dump ничего не возвращает, это ничего. Таким образом, null . $uid . null будет конкатенироваться и echo d. Но задолго до этого два звонка var_dump уже сбросили на экран выход.