Monday, 25 September 2017

PHP "&" operator



I'm not a PHP programmer (but know other languages), and I'm trying to understand a web page that was done in PHP (5.1.6) in order to do some changes.




The page has the following code (simplified):



$db_hosts = array();
$sql = 'SELECT h.hostid, h.host FROM hosts h ';

$db_items = DBselect($sql);

while($db_item = DBfetch($db_items)){
$name = $db_item['host'];
$db_host = &$db_hosts[$db_item['hostid']];

}


I'm trying to understand the last line, $db_host = &$db_hosts[$db_item['hostid']];.



It seems to be creating a new variable, $db_host, and putting something inside it, but I don't understand &$db_hosts.



I'm in doubt because as far as I know, $db_hosts is an empty array.



I found this and this, but I'm not quite sure, because in these links, the operator is "=&", and in the code, the operator is attached to the variable "= &$db_hosts" (it has an space between = and &).




Since I tried to modify it and didn't get success, I thought that it was better to ask for help...


Answer



Those are references, and they are similar to "pointers" in C or C++.



More information is in the PHP manual.



In this case, since $db_hosts is empty, the construct $db_hosts[$db_item['hostid']] will create a new array with an empty item on the index of $db_item['hostid'] and return the item's reference, making $db_host act as an 'alias' for whatever $db_hosts[$db_item['hostid']] is currently.


No comments:

Post a Comment

casting - Why wasn't Tobey Maguire in The Amazing Spider-Man? - Movies & TV

In the Spider-Man franchise, Tobey Maguire is an outstanding performer as a Spider-Man and also reprised his role in the sequels Spider-Man...