2016-04-18 2 views
1

Я хочу удалить элемент из массива. Я могу написать это:Php, удалите ключ из массива с красными

$item = array(
    'id' => 1 
    'name' => 'name' 
); 

$item2 = $item; 
unset($item2['id']); 
$names[] = $item2; 

но последние 3 строки несколько «громоздкие», су не элегантные. Можно ли это решить без создания $ item2? Что-то вроде:

$item = array(
    'id' => 1 
    'name' => 'name' 
); 

$names[] = array_ignore_index('id', $item); 
+0

вы можете сделать снята с охраны ($ пункт [ 'ID']); –

+0

, и после unset вы можете использовать array_values ​​($ array) для reindex. – IceManSpy

+1

«Красная ручка» ...? :) – deceze

ответ

1

Кратчайший из раствора коробки, чтобы создать диф ключей массива:

$names[] = array_diff_key($item, array_flip(['id'])); 

См http://php.net/array_diff_key.

3

Из ваших кодов я вижу, что вы пытаетесь получить имена [] из массива элементов. Одним из возможного простого решения для этого конкретного сценария:

Например, если у вас есть:

$items = array(
    array(
     //this is your item 1 
     'id' => 1, 
     'name' => 'name1' 
    ), 
    array(
     //this is item 2 
     'id' => 2, 
     'name' => 'name2' 
    ) 
); 

и вы хотите, чтобы получить имена в массиве имен.

Вы можете просто сделать:

$names = array_column($items, 'name'); 

Он вернется:

Array 
(
    [0] => "name1" 
    [1] => "name2" 
) 

Пожалуйста, обратите внимание, это решение наилучшим образом подходит для данного конкретного сценария, он может не соответствовать вашему текущему сценарию в зависимости.

1
function array_ignore_index($id,$item){ ///function 
    unset($item[$id]); 
    return $item; 
    } 
$a=array('id'=>1, 
    'name'=>'name'); 
$b=array_ignore_index('name',$a); 
echo $b['name']; //create error id is not present 

Вот код требуемой операции ..

0

Вы можете использовать unset array column

Кодекс

unset($item['id']); 

Чтобы проверить это

print_r($item); 
Смежные вопросы