2011-04-24 11 views
3

PHP를 다시 읽고 있습니다. 미안하지만 기본 질문 일 수 있습니다. 나는 대답을 찾을 수 없다.PHP - 다차원 배열의 데이터를 특정 키로 대체하십시오.

나는 다차원 배열을 가지고 있으므로 특정 키 (모든 인스턴스)의 값을 다른 값으로 바꿔야합니다.

Array ( 
    [13] => Array ( 
       [ad_id] => 13 
       [ad_name] => Qhxxst 
       [ad_link] => www.qxxst.co.uk 
       [ad_type] => 1 
      ) 
    [15] => Array ( 
       [ad_id] => 15 
       [ad_name] => Pxxly 
       [ad_link] => http://pixxly.net 
       [ad_type] => 1 
      ) 
    [16] => Array ( 
       [ad_id] => 16 
       [ad_name] => cxxm 
       [ad_link] => http://www.cxxm.co.uk 
       [ad_type] => 1 
      ) 
) 

모든 ad_type 인스턴스를 다른 값으로 바꾸고 싶습니다. 즉 어디 AD_TYPE = 2, I는 성공하지 않는 str_replace 및 json_decode 사용 해왔다 Y

교체 AD_TYPE = 1, X 교체. 그것들은 '1'의 모든 인스턴스를 대체하거나 아무 것도 대체하지 않습니다. 광고 유형 키만 타겟팅해야합니다.

감사합니다.

답변

6

배열의 키와 값에 액세스하는 가장 좋은 방법은 foreach 루프를 사용하는 것입니다. 같은

뭔가 :

$array= Array ([13] => Array ([ad_id] => 13 [ad_name] => Qhxxst [ad_link] => www.qxxst.co.uk [ad_type] => 1) [15] => Array ([ad_id] => 15 [ad_name] => Pxxly [ad_link] => http://pixxly.net [ad_type] => 1) [16] => Array ([ad_id] => 16 [ad_name] => cxxm [ad_link] => http://www.cxxm.co.uk [ad_type] => 1)); 

foreach ($array as $key=>$val) 
{ 
    if ($key=="ad_type" && $val==1) 
    { 
     $val="x"; 
    } 
    elseif ($key=="ad_type" && $val==2) 
    { 
     $val="y"; 
    } 
} 

+0

'ad_type'을 인용 할 수도 있습니다. 그렇지 않으면 PHP는 매번 같은 이름의 상수를 찾습니다. – alex

+0

그래, 고마워, 서둘러 쓴 :) – Maverick

4
foreach($array as &$value) { 
    $value['ad_type'] = 'new value'; 
} 
+0

더 참조 http://php.net/manual/en/control-structures.foreach.php에 대한 감사합니다. 귀하의 본보기를 사용하여 그것을 분류했습니다. 'code'foreach ($ qresult를 & $ value) { $ value [ 'ad_type'] = str_replace ("1", "Interstatial", $ value [ 'ad_type']); $ value [ 'ad_type'] = str_replace ("2", "상단 프레임", $ value [ 'ad_type']); } – Damo

관련 문제