2015-04-22 5 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] => 
) 

Я должен получить index/key элемента height из этого массива. Я пробовал под кодами, но ничего не работает для меня.

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; 

Это происходит потому, что там был space со значениями в array. Так что нужно быть 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 ?, лучше использовать ключ => значение для.

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

Использование следующим образом (Treat как associative массив)

foreach($tempStyleArray as $key => $value){ 
    if($value == "height") // not satisfying this condition 
    { 
    echo $value; 
    echo '</br>'; 
    echo $key; 
    } 
} 
Смежные вопросы