什么是它们的区别?
foreach ($my_array as $my_value) {
}
而且:
foreach ($my_array as &$my_value) {
}
可以请您给我两个实际应用场景,说明何时使用其中一个,何时使用另一个吗?
什么是它们的区别?
foreach ($my_array as $my_value) {
}
而且:
foreach ($my_array as &$my_value) {
}
可以请您给我两个实际应用场景,说明何时使用其中一个,何时使用另一个吗?
shuffle()
,它重新排列了数组的内容。你会注意到,这个函数不返回一个数组,你只需要调用它即可。$myArray = array('foo', 'bar', 'fizz', 'buzz');
shuffle( $myArray );
// $myArray is now shuffled
ucwords()
,它返回新的结果字符串:$myString = "hello world";
$myString = ucwords( $myString );
// $myString is now capitalized
Jonathan的回答非常清楚地描述了它。为了完整起见,以下是您的两个示例:
Just reading values:
$my_array = range(0,3);
foreach ($my_array as $my_value) {
echo $my_value . PHP_EOL;
}
Adding some number to each element (thus modifying each value):
foreach ($my_array as &$my_value) {
$my_value += 42;
}
If you don't use &$my_value
, then the addition won't have any effect on $my_array
.
But you could write the same not using references:
foreach($my_array as $key=>$value) {
$my_array[$key] = $value + 42;
}
The difference is that we are accessing/changing the original value directly with $my_array[$key]
.
foreach($arrFeed as &$objFeed)
$objFeed['externalSrc'] = convertToLocalImage($objFeed['externalSrc']);
当您在变量前加上“&”时,您正在创建一个“引用”。 PHP引用就像计算机上的快捷方式或符号链接。您可以创建一个指针变量,它只是相同数据的另一个名称。
我没有看到使用这些的很大区别,除了不复制变量以节省内存。当您传递变量时,您可以只传递引用,而引用指向原始对象。
我只在读取CSV文件时需要使用引用来知道分隔符是什么。只需取第一行:
$handle = fopen($file, "r");
$firstLine = fgets($handle);
fclose($handle);
然后使用这些可能的分隔符
$delimiters = array(';' => 0,',' => 0,"\t" => 0,"|" => 0);
按引用计数,找出最常用的
foreach ($delimiters as $delimiter => &$count) {
$count = count(str_getcsv($firstLine, $delimiter));
}
$delimiter = array_search(max($delimiters), $delimiters);