[英]PHP: remove element from multidimensional array (by key) using foreach
[英]Foreach multidimensional array using the key - PHP
我發布此消息是因為我無法在任何地方找到問題的答案。 我可能不是在尋找正確的搜索查詢,而只是從數組開始。
我有以下按信息類型(名稱,URL,日期,在線)組織的嵌套數組的數組:
Array (
[Name] => Array ( [0] => Name 1 [1] => Name 2 )
[URL] => Array ( [0] => http://url-1.com [1] => http://url-2.com )
[Date] => Array ( [0] => 2014-05-31 11:10 [1] => 2014-05-26 11:16 )
[Online] => Array ( [0] => 1 [1] => ) )
關鍵是顯示要鏈接的項目。 每個[0]都屬於例如:
我想做一個foreach通過鍵顯示值,以便回顯類似這樣的內容:
<a href="[URL][0]">[Name][0]</a><p>[Date][0]</p><p>[Online][0]</p>
<a href="[URL][1]">[Name][1]</a><p>[Date][1]</p><p>[Online][1]</p>
可以有1到n個鍵。
我設法以不同的方式獲取數組:
$array = Array (
[0] => Array ( [name] => Name 1 [url] => http://url-1.com [date] => 2014-05-31 11:10 [online] => 1 )
[1] => Array ( [name] => Name 2 [url] => http://url-2.com [date] => 2014-05-26 11:16 [online] => ) )
它是由包含值的數組組成的,而不是由包含所有名稱,所有URL在一起的數組組成的……如果有人知道如何將首字母更改為該名稱,則可以將其添加到解決方案中。
一旦有了這個新陣列,就可以更輕松地進行管理。 我有一個循環可以與for一起使用:
我首先通過獲取最高的數組鍵值來為設置一個限制:
$max_stop = max(array_keys($array));
然后我做了一個。 需要$ max_stop之后的+1,否則它將停止倒數第二個計數(計數從0而不是1開始)
for ($row = 0; $row < $max_stop+1; $row++){
然后我回顯我想顯示的內容:
echo '<a href="'.$array[$row]["url"].'">'.$array[$row]["name"].'</a><p>'.$array[$row]["date"].'</p><p>'.$array[$row]["online"].'</p>';}
這可能不是最好的方法,但是它可以按我的意願工作。
您可以這樣做:
$array = array(
'Name' => array( 0 => "name 1", 1 => "name 2"),
'URL' => array( 0 => "http://www.example.com", 1 => "http://www.stackoverflow.com"),
'Date' => array( 0 => "2014-05-31 11:10", 1 => "2014-05-02 12:10"),
'Online' => array( 0 => 1, 1 => )
);
foreach($array['Name'] as $k => $v) {
$url = isset($array['URL'][$k])?$array['URL'][$k]:"";
$date = isset($array['Date'][$k])?$array['Date'][$k]:"";
$online = isset($array['Online'][$k])?$array['Online'][$k]:"";
echo "<a href='$url'>$v</a><p>$date</p><p>$online</p>";
}
輸出為:
<a href='http://www.example.com'>name 1</a><p>2014-05-31 11:10</p><p>1</p>
<a href='http://www.stackoverflow.com'>name 2</a><p>2014-05-02 12:10</p><p>0</p>
但是像Barmar所說的那樣翻轉數組范圍應該是一個更好的主意。
<?php
$array = array(
'name' => array('name1','name2');
'url' => array('url1','url2');
'date' => array('date1','date2');
'online' => array('online1','online2');
);
for($i=0; $i<sizeof($array['name']); $i++)
{
?>
<a href="".$array['url'][$i]."">".$array['name'][$i]."</a><p>".$array['date'][$i]."</p><p>".$array['online'][$i]."</p>
<?php
}
?>
以不同的順序放置數組可能使操作變得更容易:
//Setup your array
$array = array(
array('Name' => 1, 'URL' => 'http://url-1.com', 'Date' => '2014-05-31 11:10', 'Online' => 1),
array('Name' => 5, 'URL' => 'http://url-2.com', 'Date' => '2014-05-20 11:10', 'Online' => 0)
);
//Loop the array
foreach($array as $item){
echo '<a href="'.$item['URL'].'">'.$item['Name'].'</a><p>'.$item['Date'].'</p><p>'.$item['Online'].'</p>';
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.