PHP හි ලූපයක අරාවක දිග අනවශ්ය ගණනය කිරීම
සංඛ්යා සහිත යම් අරාවක් ලබා දී ඇතැයි සිතන්න:
<?php
$arr = [1, 2, 3, 4, 5];
?>
අරාවේ එක් එක් මූලද්රව්යය
වර්ග කරමු. එනම්, එකම අරාව $arr,
සංඛ්යා වර්ග සමඟ ඉතිරි විය යුතුය.
මෙම අවස්ථාවේදී, foreach ලූපය
ගැලපෙන්නේ නැත,
සුපුරුදු for ලූපයක් අරාව හරහා අවශ්ය වේ,
මෙය වැනි ආකාරයට:
<?php
$arr = [1, 2, 3, 4, 5];
for ($i = 0; $i < count($arr); $i++) {
$arr[$i] = $arr[$i] * $arr[$i]; // අරාවේ එක් එක් මූලද්රව්යය වෙනස් කරන්න
}
var_dump($arr);
?>
මෙම කේතයේ ගැටලුව කුමක්ද? ගැටලුව නම්,
count($arr) අර්ථවිරහිත ලෙස
ලූපයේ සෑම පුනරාවර්තනයකදීම ගණනය කිරීමයි! ඇයි,
ලූපය තුළ අරාවේ දිග වෙනස් නොවේ, නේද?
ප්රශස්ත කිරීම සඳහා, අරාවේ දිග ගණනය කිරීම වෙනම විචල්යයකට ගෙන යමු:
<?php
$arr = [1, 2, 3, 4, 5];
$len = count($arr); // ප්රශස්ත කිරීම
for ($i = 1; $i < $len; $i++) {
$arr[$i] = $arr[$i] * $arr[$i];
}
var_dump($arr);
?>
පහත දක්වා ඇති කේතය ප්රශස්ත කරන්න:
<?php
$arr = [1, 2, 2, 4, 5];
for ($i = 1; $i < count($arr); $i++) {
if ($arr[$i - 1] === $arr[$i]) {
echo $arr[$i] . '<br>';
}
}
?>