2012-09-09 71 views
1

該文件最初是這樣的方式:PHP陣列讀取

$字符串

redredredredgreengreengreengreengreenblackblackblackblackblackwhitewhitewhitewhitewhitewhitewhitewhitewhitewhitewhitegreenredorangeorangeorangeblackblackblackyellowyellowyellowyellow

的foreach($ inarray爲$ k => $ v)的

所以我轉換爲陣列

Array ([0] => red[red] => 17 
     [1] => orange[orange] => 3 
     [2] => green[green] => 46 
     [3] => yellow[yellow] => 5 
     [4] => black[black] => 21 
     [5] => white[white] => 10 
    ) 

我怎麼看陣列就像

red is 17 
orange is 3 
green is 46 
yellow is 5 
black is 21 
white is 10 

目前我使用的foreach($ thisarray爲$鍵=> $值),但它讀取的方式不是我期待的。 非常感謝

+4

這是如何排列在首位構建? – Daedalus

+0

'Array([0] => red [red] => 17'---這是什麼? – zerkms

+0

您的格式似乎不是有效的PHP數組var_dump或print_r ...您是從哪裏得到的? – mauris

回答

1
foreach ($array as $k=>$v) { 
    $color = preg_replace('/\[.*\]/', '', $k); 
    echo $color . ' is ' . $v; 
} 
+1

哦,等等......你的數組格式不正確,是你從'print_r()'發佈的輸出還是什麼?考慮重構原來的數組,使得你有'array('red'=> 23) – David

+0

感謝您的快速響應,只是更新信息。 – olo

1

有可能是你在那裏的數組表示有一些錯字。總之,從字符串中讀取,你可以使用sscanf(..)(我希望你檢查字符串的有效性和過程的sscanf(..)返回值):

<?php 
    $output = array(); 
    $s = "red is 17"; 
    $arr = sscanf($s, "%s is %d"); 
    $output[$arr[0]] = $arr[1]; 
    print_r($output); 
?> 

輸出:

Array 
(
    [red] => 17 
) 

你可以很容易地將它擴展到從數組或其他東西中的幾個字符串讀取。

HTH

2
<?php 
$arr=array(0 => 'red[red] => 17', 
     1=> 'orange[orange] => 3' , 
     2 => 'green[green] => 4' , 
     3 => 'yellow[yellow] => 5' , 
     4 => 'black[black] => 21' , 
     5 => 'white[white] => 10'); 


foreach ($arr as $k=>$v) { 

    $str=preg_match('[[a-z \s]+]',$v,$match); 
    $num=preg_match('/[0-9]+$/',$v,$matchnum); 
    echo $match[0].' is '.$matchnum[0]."<br>"; 
} 
?> 
0

如果您尋找簡單的東西不知道。但我想你想的:

<?php 
    $colour = array() 
    $color['red'] = 17; 
    $color['orange'] = 3; 
    //etc 


foreach ($colour as $name=>$value) { 

    echo "<br> $name is $value"; 
} 
?> 

輸出

red is 17 
orange is 3