2010-08-20 9 views
0

내가 가지고있는 배열에서 키 업데이트 값을 이름을 바꿉니다PHP 배열 : 주어진 키

$array = Array(
     [0] => Array(
        [Branch] => 'Toyota', 
        [Country] => 'Jpn', 
        [id] => 'jp01' 
    ) 
     [1] => Array(
        [Branch] => 'Nissan', 
        [Country] => 'Jpn', 
        [id] => 'jp05' 
    ) 
     [2] => Array(
        [Branch] => 'Honda', 
        [Country] => 'Jpn', 
        [id] => 'jp20' 
    )) 

을 내가하고 싶은 것은 :
1 - 변경 키 BranchBrand하지만, 그것을 끝이나 배열로 옮기지 않고.
2 -이 같아야 Japan

결과에 Jpn을 변경, 주요 국가에 모든 값을 업데이트합니다

$array = Array(
     [0] => Array(
        [Brand] => 'Toyota', 
        [Country] => 'Japan', 
        [id] => 'jp01' 
    ) 
     [1] => Array(
        [Brand] => 'Nissan', 
        [Country] => 'Japan', 
        [id] => 'jp05' 
    ) 
     [2] => Array(
        [Brand] => 'Honda', 
        [Country] => 'Japan', 
        [id] => 'jp20' 
    )) 

난 정말 당신의 도움을 주셔서 감사합니다.

+1

수있는 '국가' 'JPN'이 아닌 다른 값을 포함? – haydenmuhl

+0

예, '국가'는 임의의 문자열이 될 수 있지만 업데이트 할 때 모든 값이 하나의 값으로 변경됩니다 – Derick

답변

3
$newArray = array(); 
foreach($array as $ar){ 
    $newArray[] = array(
     'Brand' => $ar['Branch'], 
     'Country' => 'Japan', 
     'id' => $ar['id'] 
    ) 
} 
$array = $newArray; 
+0

내가 얼마나 바보인지 보여 주셔서 감사합니다. "간단합니다. 키를 변경하지 않고 새로운 배열을 만들고 이전 배열을 대체하십시오." – LGT

0

TRY는 :

<?php 
foreach($array as $key => $data) 
{ 
$data['Brand'] = $data['Branch']; 
$data['Country'] = 'Japan'; 
unset($data['Branch']); 
$array[$key] = $data; 
} 
?> 
+0

그러면 'Brand' 키가 배열의 끝에 위치하게됩니다. –

+0

그래서 뭐? 연관 배열의 키에는 명시적인 순서가 없어야합니다. – Aillyn

+0

이렇게하면 모든 'Country'요소가 null 또는 빈 문자열로 업데이트됩니다. $ data [ 'Japan']이 (가) 없습니다. – haydenmuhl

0

이 그것을해야한다.

<?php 
foreach($array as $k => $v) { 
    $array[$k]['Brand'] = $array[$k]['Branch']; 
    unset($array[$k]['Branch']; 
    if($array[$k]['Country'] == 'Jpn') { 
    $array[$k]['Country'] = 'Japan'; 
    } 
} 
?> 

아마 할 수있는 똑똑한 배열 기능이 있지만 작업이 완료됩니다.

1
foreach($array as &$item) { 
    $branch = $item['Branch']; 
    array_unshift($item, array("Brand"=>$branch)); 
    unset($item['Branch']); 
    $item['Country'] = 'Japan'; 
} 

그것을 테스트하지 않았습니다 ..

+0

작동하는 경우 멋진 해결책입니다. 특히 항목에 대한 앰퍼샌드를 사용하므로 키를 사용하지 않고 배열을 변경할 수 있습니다. 매우 영리한! – 2ndkauboy

0
foreach($array as $key => $subArray){ 
    foreach($subArray as $subkey => $value) 
     if($value === 'Jpn') $subArray[$subkey] = 'Japan'; 
    $array[$key] = $subArray; 
} 


foreach($array as $key => $subArray){ 
    $subArray = array_flip($subArray); 
    foreach($subArray as $subkey => $value) 
     if($value === 'Branch') $subArray[$subkey] = 'Brand'; 
    $subArray = array_flip($subArray); 
    $array[$key] = $subArray; 
} 

출력 :

Array ([0] => Array ([Brand] => Toyota [Country] => Japan [id] => jp01) [1] => Array ([Brand] => Nissan [Country] => Japan [id] => jp05) [2] => Array ([Brand] => Honda [Country] => Japan [id] => jp20)) 
+0

매력처럼 작동합니다! 고맙습니다! – Derick

+0

반갑습니다. – Ben