Поиск по вложенному массиву, возврат только значения URL из одного столбца

0

У меня есть массив, который выглядит так, который генерируется:

$file = fopen($savedSource,"r");

            while(! feof($file)) {
                $data = (fgetcsv($file));
            }

Array
(
    [0] => First Name
    [1] => Last Name
    [2] => Title
    [3] => Company / Account
    [4] => Email
    [5] => Lead ID
    [6] => Profile Image
Zelayas
    [7] => Zelayas
    [8] => 
    [9] => Kramer
    [10] => [email protected]
    [11] => 123456
    [12] => https://media.com/0f48c22.jpg
Kanngiesser
    [13] => Kanngiesser
    [14] => 
    [15] => Johnson
    [16] => [email protected]
    [17] => 7891234
    [18] => https://media.com/135f3b7.jpg

Я хотел бы иметь возможность хранить эти URL-адреса только в одном простом (не вложенном) массиве, так что результат будет выглядеть следующим образом:

Array
    (
        [0] => https://media.com/0f48c22.jpg
        [1] => https://media.com/135f3b7.jpg

=== РЕДАКТИРОВАНИЕ === Из выбранного ответа я смог добиться того, что я в основном.

        $new_array = array();
        foreach($data as $a){
            if(substr( $a, 0, 4 ) === "http"){
                array_push($new_array, $a);
            }
        }

В результате $ new_array теперь дает мне

Array
(
    [0] => https://media.com/0f48c22.jpg
Kanngiesser
    [1] => https://media.com/135f3b7.jpg
Mostovoy

Похоже, что скрипт видит последнее поле текущей строки И первое поле следующей строки AS ONE FIELD.

  • 1
    мой ленивый путь: цикл и проверка, если значения начинаются с "http"
  • 3
    $urls = preg_grep('/^http/', $array);
Показать ещё 7 комментариев
Теги:
csv
arrays
foreach
while-loop

2 ответа

1
Лучший ответ

Вы можете использовать substr для обнаружения http в начале строки.

$new_array = array();
foreach($old_array as $a){
    if(substr( $a, 0, 4 ) === "http"){
        array_push($new_array, $a);
    }
}
  • 0
    Я полагаю, что $ new_array [] = $ a немного быстрее, поскольку он избегает вызова функции, но я проголосовал за этот ответ для форматирования кода. (Кроме того, обратите внимание, что он не выдаст ошибку, если $ new_array не определен ... не то, что это обязательно хорошая вещь)
  • 0
    Я не знал аспект производительности. Спасибо!
Показать ещё 3 комментария
0
$new=array();
foreach ($array as $check){

if(substr($check,0,4)=='http')
$new[]=$check;
}
  • 1
    substr ($ check, 0, 4); *
  • 0
    спасибо @DarkBee;)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню