2014-01-09 6 views
-1

에 키 값을 바꾸 0,1,2와PHP는 I 배열이 배열

Array 
(
[0] => Array 
(
[id] => 31299 
[name] => 37322426212 
[ips] => 
[tech_prefix] => 
[password] => 
[id_voip_hosts] => 
[proxy_mode] => 
[auth_type] => ani 
[ani] => 37322426212 
[accname] => 
[protocol] => 
[port] => 
[orig_enabled] => 1 
[term_enabled] => 
[orig_capacity] => 
[term_capacity] => 
[orig_rate_table] => 7 
[term_rate_table] => 
[id_dr_plans] => 
[orig_groups] => 
[term_groups] => 
[notes] => 
) 
[1] => Array 
(
[id] => 4373 
[name] => 37322983029 
[ips] => 
[tech_prefix] => 
[password] => 
[id_voip_hosts] => 
[proxy_mode] => 
[auth_type] => ani 
[ani] => 37322983029 
[accname] => 
[protocol] => 
[port] => 
[orig_enabled] => 1 
[term_enabled] => 
[orig_capacity] => 
[term_capacity] => 
[orig_rate_table] => 7 
[term_rate_table] => 
[id_dr_plans] => 
[orig_groups] => 
[term_groups] => 
[notes] => 
) 
[2] => Array 
(
[auth_type] => ani 
[name] => 37322983029 
[ani] => 37322983029 
[orig_enabled] => Array 
(
[0] => on 
) 
[orig_rate_table] => 7 
) 
) 

가방 개 (3,4 ... 10 ... 등) 일 수있다. 는 내가 뭘하려고 키 aniname = 37322983029와 배열을 찾아 비워 와 '###'nameani을 대체하는 것입니다 :

[mane]=>"###",//where name = '37322983029' 
[ani]=> //where ani = '37322983029' 

내가 str_replace하지만 성공했습니다. 어떻게이 작업을 수행 할 수 있습니까?

+0

시도한 코드를 보여주세요. 그리고 BTW : 그것은 _any_이며 _no_ 성공입니다. –

+0

이렇게 해보자 :'foreach ($ array as $ key => $ value) { $ out [$ value] = $ value; } –

+0

array_replace() 함수를 사용하십시오. – PravinS

답변

0

I를 생성 당신이 찾고있는 것 같아요 :

foreach($yourArray as &$a) 
{ 
    if($a["ani"] == 37322983029 and $a["ani"] == $a["name"]) 
    { 
    $a["name"] = "###"; 
    $a["ani"] = ""; 
    } 
} 
+0

당신과 나는 실질적으로 동일한 솔루션을 생각해 냈습니다 ('&'를 사용하여 배열의 배열을 통해 원래의 'foreach'루프로 참조). 나는 비록 당신이 이중 조건을 필요로한다고 생각하지 않는다. (비록 ani와 name이 주어진 예제에 대해 같은 값을 가지고 있다고하더라도). – Floris

+0

@Floris OP의 질문을 적어도 5 번 읽었으며 아직도 혼란 스럽습니다. 제 생각에 그는이 이중 조건을 원합니다. 그러나 그렇지 않다면, 내 직책은 적어도 그에게 해결책의 방향을 보여줄 것입니다. – Alexxus

0

회원님이 str_replace을 사용하고 있지만, 다음 (animane (또는 name)이 배열에 문자열 인덱스 실제로 가정 - 명확하지 귀하의 예제에서?) 작동 방법을 확인하십시오

foreach($myArray as &$val) { 
    if($val['ani'] == 37322983029) { 
    $val['ani'] = ''; 
    $val['name'] = "###"; 
    } 
} 

important&을 사용하여 참조로 값을 전달하십시오. 따라서 복사가 아닌 배열의 실제 요소로 작업하게됩니다. 그런 식으로 $val을 수정하면 실제로 원래 배열이 수정됩니다. 앰퍼샌드가 없으면 초기 배열은 루프에 의해 변경되지 않습니다.

참고 사항 - 귀하의 예에서 단지 ani==37322983029 또는 name=37322983029을 테스트 할 것인지 확실하지 않습니다. 나는 (작동 시험)이 두 조건이 (또는 Alexxus의 답변을 참조)

전체 코드 예제를 위의 코드를 수정할 수 있습니다 확신 :

<?php 
$a = Array(Array('a'=>4, 'b'=>5),Array('a'=>6, 'b'=>7)); 
echo '<pre>'; 
print_r($a); 
foreach($a as &$v){ 
    if($v['a']==6) { 
     $v['a'] = 12; 
     $v['b'] = ''; 
    } 
} 
print_r($a); 
echo '</pre>'; 
?> 

출력을

Array 
(
    [0] => Array 
     (
      [a] => 4 
      [b] => 5 
     ) 

    [1] => Array 
     (
      [a] => 6 
      [b] => 7 
     ) 

) 
Array 
(
    [0] => Array 
     (
      [a] => 4 
      [b] => 5 
     ) 

    [1] => Array 
     (
      [a] => 12 
      [b] => 
     ) 

)