2012-01-27 130 views
0

我有多维数组像下面,如何从PHP中的多维数组中获取值?

Array 
(
    [14289] => Array 
     (
      [0] => Ability:B,Itemname:Session #3: Tues June 28th - Fri July 8th (9-2:00PM)#1 only: 2pm 
      [1] => Ability:B+,Itemname:Session #3: Tues June 28th - Fri July 8th (9-2:00PM)#1 only: 2pm 
      [2] => Ability:B++,Itemname:Session #3: Tues June 28th - Fri July 8th (9-2:00PM)#1 only: 2pm 
     ) 

    [14279] => Array 
     (
      [0] => Ability:N/S,Itemname:Session #1: Tues May 31st - Fri June 10th (1-5:30PM)#1 only: 1pm 
      [1] => Ability:N/S+,Itemname:Session #1: Tues May 31st - Fri June 10th (1-5:30PM)#1 only: 1pm 
      [2] => Ability:N/S++,Itemname:Session #1: Tues May 31st - Fri June 10th (1-5:30PM)#1 only: 1pm 
     ) 

    [14288] => Array 
     (
      [0] => Ability:N/S,Itemname:Session #3: Tues June 28th - Fri July 8th (9-2:00PM)#1 only: 1:30pm 
     ) 

    [14291] => Array 
     (
      [0] => Ability:N/S+,Itemname:Session #4: Tues July 12th - Fri July 22nd (9-2:00PM)#1 only: 1pm 
     ) 

    [14284] => Array 
     (
      [0] => Ability:N/S++,Itemname:Session #2: Tues June 14th - Fri June 24th (9-2:00PM)#1 only: 1:30pm 
     ) 

) 

我需要从这个数组中的值和爆炸的价值观转化为能力和ITEMNAME。

如何做到这一点?

回答

1

假设$array包含您的数据,以下代码将执行此操作。

$result = array(); 
foreach($array as $a){ 
    foreach($a as $l){ 
     list($ab, $it) = explode(",", $l, 2); 
     $ab = substr($ab, strlen("Ability:")); 
     $it = substr($it, strlen("Itemname:")); 
     $result[] = array(
      'Ability' => $ab, 
      'Itemname' => $it 
     ); 
    } 
} 
0

试试这个,它适用于我。我用正则表达式匹配想要的字符串

<?php 
$arr[][] = 'Ability:B,Itemname:Session #3: Tues June 28th - Fri July 8th (9-2:00PM)#1 only: 2pm'; 
$arr[][] = 'Ability:B+,Itemname:Session #3: Tues June 28th - Fri July 8th (9-2:00PM)#1 only: 2pm'; 
$arr[][] = 'Ability:B++,Itemname:Session #3: Tues June 28th - Fri July 8th (9-2:00PM)#1 only: 2pm'; 

$pattern = '/Ability:(.*),Itemname:(.*)$/m'; 

for ($i = 0; $i < count($arr); $i++) { 
    for ($j = 0; $j < count($arr[$i]); $j++) { 
     preg_match_all($pattern, $arr[$i][$j], $matchResult); 
     echo 'Original string: '. $arr[$i][$j].'<br>'; 
     echo 'Ability: '.$matchResult[1][0].'<br>'; 
     echo 'Itemname: '.$matchResult[2][0].'<br>'; 
     echo '<br><hr><br>'; 
    } 
} 
?>