2015-04-22 78 views
4

我有下面的php數組$tempStyleArray,它是通過spiting一個字符串創建的。從php中的數組獲取值的索引

$tempStyleArray = preg_split("/[:;]+/", "width: 569px; height: 26.456692913px; margin: 0px; border: 2px solid black;"); 


Array 
(
    [0] => width 
    [1] => 569px 
    [2] => height 
    [3] => 26.456692913px 
    [4] => margin 
    [5] => 0px 
    [6] => border 
    [7] => 2px solid black 
    [8] => 
) 

我得從這個數組元素heightindex/key。我嘗試了下面的代碼,但似乎沒有爲我工作。

foreach($tempStyleArray as $value) 
{ 
    if($value == "height") // not satisfying this condition 
    { 
    echo $value; 
    echo '</br>'; 
    $key = $i; 
    } 
} 
在上述方案

它不會永遠滿足條件:(

$key = array_search('height', $tempStyleArray); // this one not returning anything 

幫我解決這個問題?有沒有我的陣列格式的任何問題?

回答

2

試試這個 -

$tempStyleArray = array_map('trim', preg_split("/[:;]+/", "width: 569px; height: 26.456692913px; margin: 0px; border: 2px solid black;")); 
var_dump($tempStyleArray); 
$key = array_search('height', $tempStyleArray); 
echo $key; 

它發生,因爲有spacearray值。所以需要成爲trimmed。分割字符串後,每個值都將通過trim(),以便white spaces被刪除。如下

+0

那麼如何將我的數組轉換爲這種格式? – chriz

+0

你是如何得到這個數組的? –

1

在你的代碼有錯誤請嘗試:

foreach($tempStyleArray as $key => $value) 
{ 
    if($value == "height") 
    { 
    echo $key; 
    } 
} 
4
foreach($tempStyleArray as $value) 
{ 
    if($value == "height") // not satisfying this condition 
    { 
    echo $value; 
    echo '</br>'; 
    $key = $i; 
    } 
} 

和$ i是什麼,最好使用key => value。在你的陣列

foreach($tempStyleArray as $key => $value) 
{ 
    if($value == "height") // not satisfying this condition 
    { 
    echo $value; 
    echo '</br>'; 
    echo $key; 
    } 
} 

來看,似乎想要說「寬度」將是569px,那麼也許是更好地做到這一點:

$tempStyleArray = array(
    "width" => "569px", 
    "height" => "26.456692913px", 
    "margin" => "0px", 
    "border" => "2px solid black" 
); 

這樣,你可以只說

echo $tempStyleArray["width"]; 

這會更快,你不必因爲搜索而應付。

UPDATE:

for($i == 1; $i < count($tempStyleArray); $i = $i+2) 
{ 
    $newArray[ $tempStyleArray[$i-1] ] = $tempStyleArray[$i] 
} 

用,你可以得到一個基於散列的數組。

+0

我不好,這個解決方案沒有工作..但你的建議是巨大的。檢查我編輯的問題..我通過分割一個字符串生成這個數組,我怎麼可以讓我的數組像我建議? – chriz

+1

更新,如果你的「數組」會很大,你需要查詢很多,這會比使用array_search更好。 – lcjury

2

您從陣列

採取錯誤的價值觀應該是

foreach($tempStyleArray as $temp => $value) { 
    if($value == "height") // will satisfy this condition 
    { 
     echo $value; 
     echo '</br>'; 
     $key = $i; 
    } 
} 
2

使用(像對待一個associative陣列)

foreach($tempStyleArray as $key => $value){ 
    if($value == "height") // not satisfying this condition 
    { 
    echo $value; 
    echo '</br>'; 
    echo $key; 
    } 
}