2017-08-21 236 views
-4

這是我的數組:PHP數組轉換爲字符串

$info = array( 
    "setA" => array ("start" => 0, "end" => 0), 
    "setB" => array ("start" => 100, "end" => 300), 
    "setC" => array ("start" => 0, "end" => 0), 
    "setD" => array ("start" => 500, "end" => 1000), 
    "setE" => array ("start" => 0, "end" => 0), 
    "setF" => array ("start" => 0, "end" => 0), 
    "setG" => array ("start" => 0, "end" => 0) 
); 

我如何轉換這使echo命令產生:

setA 0 - 0 
setB 100 - 300 
setC 0 - 0 
setD 500 - 1000 
setE 0 - 0 
setF 0 - 0 
setG 0 - 0 

我已經試過各種事情,包括以下內容,但沒有一樣是關。

array_walk_recursive($info, function($v) use (&$result) { 
        $result[] = $v; 
       }); 
       echo implode('<br>', $result); 

任何想法?由於

+4

'foreach'太花哨......? – deceze

+1

在之前_「當然沒有我知道的foreach,但我的實際情況更復雜」_。 – CodeCaster

+0

這裏不需要反對票。 OP陳述了問題並嘗試了代碼。標題雖然有點誤導。 – Progrock

回答

1

只是foreach循環應該這樣做:

foreach ($info as $set => $range) { 
    echo $set . ' ' . $range['start'] . ' - ' . $range['end'] . '<br />'; 
} 
+0

由於某種原因,我不認爲使用foreach。我覺得我太過於複雜。 – Tom

0

下面是代碼,

foreach($info as $key => $value){ 
    echo $key." ". $value['start']." - ".$value['end']; 
} 

其簡單的foreach循環,通過您的數組遍歷。

+0

這與[第一個答案](https://stackoverflow.com/a/45797704/3316645)完全相同。 – domsson

+0

正確!但在發佈答案之前我會知道,我從未發佈過。 – rahulsm

0

的foreach會更容易使用

$info = array( 
    "setA" => array ("start" => 0, "end" => 0), 
    "setB" => array ("start" => 100, "end" => 300), 
    "setC" => array ("start" => 0, "end" => 0), 
    "setD" => array ("start" => 500, "end" => 1000), 
    "setE" => array ("start" => 0, "end" => 0), 
    "setF" => array ("start" => 0, "end" => 0), 
    "setG" => array ("start" => 0, "end" => 0) 
); 

foreach ($info as $key => $value) { 
    echo $key.' '.$value['start'].' - '.$value['end'].'</br>'; 
} 

輸出:

setA 0 - 0 
setB 100 - 300 
setC 0 - 0 
setD 500 - 1000 
setE 0 - 0 
setF 0 - 0 
setG 0 - 0 
+0

與其他三個答案完全一樣。 – domsson

+0

如果你看時間,它也是一樣,更新答案:) –

+1

奇怪的html斷裂元素,你已經到了那裏。我在你的輸出中看不到'
'。 – Progrock

0

這很簡單,使用foreach。這種控制結構精密製造,反覆數組:

foreach ($info as $key => $val) { 
    echo $key, ' ', $val['start'], ' - ', $val['end'], '<br>'; 
} 
+0

我們現在已經有四次這樣的答案。 ;) – domsson

+1

@domsson我們需要一個foreach來解答這個問題。 –

+0

@domsson你確實是錯的,在我寫這篇文章的時候,答案是6次,而不是4次。這是當人們被允許在同一頁面上同時書寫時發生的事情。 ;)編輯:通過查看其他答案,似乎你不反對重複您的意見。 – ksjohn

1
<?php 
$info = array( 
    "setA" => array ("start" => 0, "end" => 0), 
    "setB" => array ("start" => 100, "end" => 300), 
    "setC" => array ("start" => 0, "end" => 0), 
    "setD" => array ("start" => 500, "end" => 1000), 
    "setE" => array ("start" => 0, "end" => 0), 
    "setF" => array ("start" => 0, "end" => 0), 
    "setG" => array ("start" => 0, "end" => 0) 
); 

foreach($info as $key => $value) { 
    printf("%s %d - %d\n", $key, $value['start'], $value['end']); 
} 

輸出:

setA 0 - 0 
setB 100 - 300 
setC 0 - 0 
setD 500 - 1000 
setE 0 - 0 
setF 0 - 0 
setG 0 - 0 
0

只是遍歷你的數組:

$result = ""; 
foreach($info as $key => $content){ 
    $result .= $key . " "; 
    foreach($content as $bounce => $value){ 
     $result .= $value . "-"; 
    } 
    $result = substr($result, 0, strlen($result) - 1) . "<br />\n; 
} 
echo $result; 

認爲它會做的工作。

+1

想一想?你試過了嗎?不,如果你確實遇到了語法錯誤。 – Progrock

+1

加一個最鈍的答案。 – Progrock

+0

沒有嘗試...但是,除了語法錯誤,算法是正確的...是的,第二個循環後面的行是不正確的 –

0

就我個人而言,我會用foreach遍歷數組,但你幾乎在那裏用你的array_walk示例(使用array_walk而不是array_walk_recursive)。

<?php 
$result = []; 
array_walk($info, function($v, $k) use (&$result) { 
    $result[] = $k . ' ' . $v['start'] . ' - ' . $v['end']; 
}); 
echo implode('<br>', $result); 

輸出:

setA 0 - 0<br>setB 100 - 300<br>setC 0 - 0<br>setD 500 - 1000<br>setE 0 - 0<br>setF 0 - 0<br>setG 0 - 0 

你可以跳過建立一個數組,然後由array_walk回調中呼應了內爆。

<?php 
array_walk($info, function($v, $k) { 
    echo $k . ' ' . $v['start'] . ' - ' . $v['end'] . "\n"; 
}); 

但是正如你所看到的,foreach更簡單。

foreach($info as $k => $v) { 
    echo $k . ' ' . $v['start'] . ' - ' . $v['end'] . "\n"; 
}