Я пытаюсь сбросить пару элементов из массива одновременно, отправить неустановленные элементы в другой массив.
array(6) {
[0]=> string(65) "https://www.kintetsu-re.co.jp/mansion_kansai/outline/midosuji241/"[1]=> string(41) "https://geo.8984.jp/outline/suminodo.html"[2]=> string(56) "http://www.sohgoh-outline.jp/index.php?bunjo_number=0141"[3]=> string(56) "http://www.sohgoh-outline.jp/index.php?bunjo_number=0136"[4]=> string(56) "http://www.sohgoh-outline.jp/index.php?bunjo_number=0099"[5]=> string(53) "https://www.sgr-sumai.jp/mansion/tezukayama21/outline"}
Три ссылки в этом массиве начинаются с http://www.sohgoh-outline.jp . Так что я пытаюсь сбросить их. Но не один за другим. Я уже могу это сделать. Например, я пытался найти тех, у кого strpos
$needle = "http://www.sohgoh-outline.jp/";
foreach ($link as $unset){
if (($index = strpos($unset, $needle)) !== false){
$renai [] = $unset[$index];
unset($unset[$index]);
}
}
Но эта ошибка выскакивает.
Невозможно сбросить смещения строк
Какие-либо предложения?
измените свой код следующим образом:
foreach ($link as $k => $unset){
if ((strpos($unset, $needle)) !== false)
{
$renai [] = $link[$k]; // This will add the value to new array.
unset($link[$k]); // THIS WILL UNSET THE VALUE.
}
}
Самым простым методом, вероятно, является регулярное выражение с preg_grep и array_diff.
$out = preg_grep("/.*?(sohgoh-outline\.jp).*/", $arr);
var_dump($out); //sohgoh-outline.jp links
$arr = array_diff($arr, $out);
var_dump($arr); // all but sohgoh-outline.jp links
Вывод вышеуказанного кода:
array(3) {
[2]=>
string(56) "http://www.sohgoh-outline.jp/index.php?bunjo_number=0141"[3]=>
string(56) "http://www.sohgoh-outline.jp/index.php?bunjo_number=0136"[4]=>
string(56) "http://www.sohgoh-outline.jp/index.php?bunjo_number=0099"}
array(3) {
[0]=>
string(65) "https://www.kintetsu-re.co.jp/mansion_kansai/outline/midosuji241/"[1]=>
string(41) "https://geo.8984.jp/outline/suminodo.html"[5]=>
string(53) "https://www.sgr-sumai.jp/mansion/tezukayama21/outline"}