2016-01-28 2 views
0

Код ниже принимает массив, $array и ключ массива, $item и размывается путем добавления запятой каждого элемента. Как я могу изменить его так, чтобы, если значение элемента внутри массива равно null, то implode не будет добавлять пустую запятую.PHP ничего не возвращает, если поля array_column пустые

public static function implode($array, $item) 
{ 
    return implode(',', array_column($array, $item)); 
} 

Например:

$array = [ 
    ['eri_number' => ''], 
    ['eri_number' => '222'] 
    ['eri_number' => ''] 
]; 
$item = 'eri_number'; 
$myClass->implode($array, $item); 

Приведенный выше код будет выводить;

,222, 

Я просто хочу его к выходу 222 без других пустых значений.

Может ли кто-нибудь помочь?

+1

[array_filter] (http://php.net/manual/en/function.array-filter.php) – dan08

ответ

1

Вы можете отфильтровать пустышки с помощью array_filter():

return implode(',', array_filter(array_column($array, $item))); 

Обратите внимание, что это также будет отфильтровывать 0, струнные 0, false и null.

0

Применить array_filter к массиву перед иммобилизацией.

public static function implode($array, $item) 
{ 
    return implode(',', array_filer(array_column($array, $item))); 
} 

Вы можете добавить функцию обратного вызова, чтобы определить, что вы хотите, чтобы отфильтровать, но так как пустая строка falsey, он должен работать для вас прямо из коробки.

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