如何停止執行else塊foreach循環內的數組中的項目數?這是可能的,還是應該改變程序邏輯?如何打破foreach循環來停止執行else塊內?
僞代碼這裏要明確什麼我想做的事:
input = 2
array = [1,2,3,4,...]
foreach item in array
if input equals 3
logs MATCH
else
logs NOT MATCH // logs once for 1, not for 2, logs for 3,4,number of items
end foreach
我曾嘗試與突破,但我沒有得到預期的效果,如果我打破別人,第一次運行foreach循環會停住了,在這種特殊情況下,數組中的第二項永遠不會被測試。
Actuall代碼是波紋管,但我希望僞代碼足夠清晰。
// take user input
$phone_number = '004913535030';
// initialize countrycodes
$countrycodes = [385,49,386];
// is number local number, one or zero zeros, two digit local or mobile code, and 6 or 7 digits?
if (preg_match('(^0*\d{0,2}\d{6,7}$)', $phone_number))
{
// If yes, then we deal with local number, without country code prefix
// Remove zeroes at begining if any, and add "+countrycode(385)." in front of clean number
echo "local number";
echo 'Original number is: ' . $phone_number . '<br>';
echo 'Country code is not matched!';
echo '<br>' . 'Stripped number is: ' . preg_replace("/^(0+)/", '', $phone_number);
echo '<br>' . 'Formatted number is: ' . '+' . $countrycodes[0] . '.' . preg_replace("/^(0{1,}$countrycodes[0])|^($countrycodes[0])|^(0+)/",'',$phone_number);
}
else
{
// bla bla, for each item in array check match, then strip number, and format it according to EPP RFC standard
foreach($countrycodes as $countrycode)
{
// Do we have country code in phone number and number longer than 9 characters? Then some of EU members phone number
// Clean number, remove zeroes at begining if any, and add "+countrycode." in front of clean number
if (preg_match("/^(0{1,}$countrycode\d{8,})|^($countrycode\d{8,})/", $phone_number, $match[0]))
{
echo 'Original number is: ' . $phone_number . '<br>';
echo 'Country code is matched ' . '<br>' . 'Country code is:' . $countrycode;
//print_r($match);
// strip country code and one or more preceding zeros
echo '<br>' . 'Stripped number is: ' . preg_replace("/^(0{1,}$countrycode)|^($countrycode)|^(0+)/", '', $phone_number);
echo '<br>' . 'Formatted number is: ' . '+' . $countrycode . '.' . preg_replace("/^(0{1,}$countrycode)|^($countrycode)|^(0+)/",'',$phone_number);
// break
}
// HOW TO PREVENT EXECUTING OF ELSE BLOCK NUMBER OF ITEMS IN COUNTRYCODES ARRAY TIMES BUT PRINT WHEN COUNTRYCODE NOT MATCHED?
else
{
echo "Not an EU number";
}
}
}
輝煌。這正是我想要做的。 –
很高興幫助你:) –