我有一個:陣列降低PHP
$arr = array(321,0.4,0.8,1.2);
$result = array_reduce($arr,create_function('$op1,$op2','return $op1-=$op2;'));
echo $result; //the result should be 318.6, but i got -323.4
請你告訴我,這有什麼錯呢?
我有一個:陣列降低PHP
$arr = array(321,0.4,0.8,1.2);
$result = array_reduce($arr,create_function('$op1,$op2','return $op1-=$op2;'));
echo $result; //the result should be 318.6, but i got -323.4
請你告訴我,這有什麼錯呢?
array_reduce函數有3個參數。第三是$初始。
這是默認爲NULL。你也應該填寫這個。看看這裏:http://nl.php.net/array_reduce
如果可選最初是可用的,它會在 開始的過程中使用,或作爲最終結果的情況下,該陣列是 空。
爲什麼要對此投票?這是答案。在第一個函數調用時它將是'null - = 321',這將導致'-321',然後在隨後的調用中它將是'-321 - = 0.4',... – Shef
的Try ...
array_reduce($arr,
create_function('$op1,$op2','print "$op1, $op2\n";
return $op1-=$op2;'));
,並都應該很清楚。
您正在使用了錯誤的方向array_reduce
。數組中的第一項需要從數組中移出並用作初始值。
$arr = array(321,0.4,0.8,1.2);
$initial = array_shift($arr);
$result = array_reduce($arr, create_function('$op1,$op2','return $op1-=$op2;'), $initial);
echo $result;
$ arr = array(1, 2,3,4,5,6); $ initial = array_shift($ arr); ($ op1,$ op2','return $ op1 = - $ op2;'),$ initial);} $ result = array_reduce($ arr,create_function('$ op1,$ op2','return $ op1 = - $ op2;'),$ initial); echo $ result; 我需要類似((((1-2)-3)-4)-5)-6 = -19,但上面的結果與我需要的不一樣,請請幫助我。 謝謝 –
您的聲明中有錯誤。 $ op1 = - $ op2應該是$ op1 - = $ op2。 - =表示「左移,右減並保存到左邊」= - 僅意味着「從右到左保存負數」。 –
只是所有。減去元素的總和,但是從第一要素,第一:
echo array_shift($arr) - array_sum($arr); # 318.6
所以,我怎麼能知道檢查結果= 318.6? 謝謝 –
你將用'$ arr = array(321,0.4,0.8,1.2)獲得結果'318.6'; ($ op1,$ op2','return $ op1 - = $ op2;'),$ arr [0] * 2); $ result = array_reduce($ arr,create_function('$ op1,$ op2','return $ op1 - = $ op2;') echo $ result;' – Shef
$ arr = array(1,2,3,4,5,6); $ initial = array_shift($ arr); ($ op1,$ op2','return $ op1 = - $ op2;'),$ initial);} $ result = array_reduce($ arr,create_function('$ op1,$ op2','return $ op1 = - $ op2;'),$ initial); echo $ result; –