2013-11-20 2 views
1

Мне было интересно, можно ли сделать str_replace внутри массива. У меня есть сценарий, который получает значения из CSV-файла и помещает его в базу данных mysql. Однако ячейки в файле csv могут содержать '-', чтобы указать, что нет значения. Однако текущий скрипт будет импортировать значение '-' в базу данных mysql. Я бы хотел, чтобы он проигнорировал значение «-» или заменил его на «» (пустое значение ячейки), чтобы никакое значение не импортировалось в базу данных mysql.str_replace в массиве?

Это то, как выглядит текущий массив (часть скрипта). Я хотел бы применить фильтр: sub_sub_category

public function setFields($dir = 'import') 

    { 

    $timeNow = date('Y-m-d H:i:s'); 

    if ($this->v14) 

     $this->_path = realpath(_PS_ADMIN_DIR_.'/'.$dir).DIRECTORY_SEPARATOR; 

    else 

     $this->_path = realpath(PS_ADMIN_DIR.'/'.$dir).DIRECTORY_SEPARATOR; 

    $this->psFields1a = array(
'sub_sub_category' => $this->l('Sub-sub-category')); 
} 

Я надеюсь, что это ясно, что я имею в виду и что это выполнимо, что нужно сделать. Спасибо, Robbert

+0

Выразить массив – sectus

+1

Ваш вопрос о 'str_replace', но не получил его из вашего кода, вы можете уточнить? –

+0

Это то, что я хотел бы добавить. – RobbertT

ответ

2

следующий код демонстрирует, как можно удалить все «-» дефиса из массива с помощью array_walk.

function remove_dash(&$item, $key) { 
     if($item === '-') $item = ''; 
    } 

    $myArray = array("d" => "hello", "-", "b" => "test", "c" => "-"); 

    array_walk($myArray, 'remove_dash'); 

(надеюсь, что я udnerstood вопрос)

+0

Спасибо, где я должен помещать эту функцию в свой код? Внутри или снаружи 'public function'? – RobbertT

+0

Вы должны, естественно, создать функцию 'remove_dash' вне функции setFields, и поскольку она является функцией-членом, вы должны называть ее следующим образом: array_walk ($ myArray, array ($ this, 'remove_dash')); – Matthew

+0

Хорошо спасибо. Я поместил функцию ниже функции setFields и изменил array_walk. Я не очень разбираюсь в массивах, но когда я помещаю код 'function remove_dash (& $ item, $ key) { if ($ item === '-') $ item = ''; } $ myArray = array ("d" => "hello", "-", "b" => "test", "c" => "-"); array_walk ($ myArray, array ($ this, 'remove_dash')); 'в коде это приводит к пустой странице. Я делаю что-то неправильно? благодаря! – RobbertT

0

Я надеюсь, что это правильная линия, на которую вы смотрите, но почему бы просто не сделать это, как вы ее настраиваете?

$this->psFields1a = array(
sub_sub_category => str_replace('-','',$this->l('Sub-sub-category')) 
); 
+0

Спасибо, угадайте, что это неправильное место, потому что «-» все еще отображается как под-подкатегория. – RobbertT

Смежные вопросы