簡體   English   中英

創建具有特定鍵值的數組

[英]Creating Array with specific Key Value

為了有一個數組輸出像

array(2) { ["2012-08-16"]=> array(1) { [0]=> array(2) { ["title"]=> string(24) "RLI Class #42 Graduation" ["event_date"]=> string(10) "2012-08-16" } } ["2012-08-24"]=> array(1) { [0]=> array(2) { ["title"]=> string(10) "Test Event" ["event_date"]=> string(10) "2012-08-24" } } } 

我正在嘗試以下

$array = array('title' => $mytitle, 'event_date' => $myyear."-".$mymonth."-".$myday);
$events[$array['event_date']] = $array['title'];

但是我得到的輸出是

array(1) { [""]=> NULL } array(1) { ["2012-8-24"]=> string(10) "Test Event" } array(1) { ["2012-8-16"]=> string(25) "RLI Class #42 Graduation" } 

如何更改代碼以使$ events以所需的數組格式輸出?

編輯以防萬一代碼的背景會有助於找到解決方案,在這里

while ( $query->have_posts() ) : $query->the_post();
$mytime = get_post_meta($post->ID, 'wpcf-start-date', true); // this has 2 entries: 1>1347408000 and 2>1347408000
$mydate = date("Y-m-D",$mytime);
$mydatearr = getdate($mytime);
$myday = $mydatearr['mday'];  // returns values 16 and 24
$mymonth = $mydatearr['mon']; // returns values 8 and 8
$myyear = $mydatearr['year']; // returns values 2012 and 2012
$mytitle = $post->post_title;
if (($myyear == $year) &&  ($mymonth == $month)) //The $year is declared earlier as 2012 and $month as  8

接下來是我替換的代碼

 $events = array(); ## Declare the new array.
     foreach ($array as $line) {
   $event_date = $line['event_date']; ## Set event_date to a variable
   $events[$event_date] = array( 'title' => $line['title'], 'event_date' => $event_date );  ###add new value to new array with key value            }
 var_dump($events);

最后

   endwhile;

編輯確定。 我似乎錯誤地刪除了$ array聲明,並且更早地在循環內聲明了$ events數組。 所以我正在更新新代碼

$events = array(); ## Declare the new array.
while ( $query->have_posts() ) : $query->the_post();
$mytime = get_post_meta($post->ID, 'wpcf-start-date', true);
$mydate = date("Y-m-D",$mytime);
$mydatearr = getdate($mytime);
$myday = $mydatearr['mday'];
$mymonth = $mydatearr['mon'];
$myyear = $mydatearr['year'];
$mytitle = $post->post_title;
if (($myyear == $year) &&  ($mymonth == $month))
$array = array('title' => $mytitle, 'event_date' => $myyear."-".$mymonth."-".$myday);
foreach ($array as $line) {
$event_date = $line['event_date']; ## Set event_date to a variable
$events[$event_date] = array( 'title' => $line['title'], 'event_date' => $event_date );  ###add new value to new array with key value
}
var_dump($events);
endwhile; 

$ array的var_dump給出

NULL
Warning: Invalid argument supplied for foreach() in /home/newmedia/public_html/dev/wp-gallerific/wp-content/themes/lajcc-theme/calendar.php on line 165
array(2) { ["title"]=> string(10) "Test Event" ["event_date"]=> string(9) "2012-8-24" } array(2) { ["title"]=> string(25) "RLI Class #42 Graduation " ["event_date"]=> string(9) "2012-8-16" } 

和var_dump用於$ events輸出

Warning: Invalid argument supplied for foreach() in /home/newmedia/public_html/dev/wp-gallerific/wp-content/themes/lajcc-theme/calendar.php on line 165
array(0) { } array(2) { ["T"]=> array(2) { ["title"]=> string(1) "T" ["event_date"]=> string(1) "T" } [2]=> array(2) { ["title"]=> string(1) "2" ["event_date"]=> string(1) "2" } } array(3) { ["T"]=> array(2) { ["title"]=> string(1) "T" ["event_date"]=> string(1) "T" } [2]=> array(2) { ["title"]=> string(1) "2" ["event_date"]=> string(1) "2" } ["R"]=> array(2) { ["title"]=> string(1) "R" ["event_date"]=> string(1) "R" } }  

我認為您需要foreach()數組中的foreach()以獲得所需的輸出。

試試看:

$events = array(); ## Declare the new array.
foreach ($array as $line) {
   $event_date = $line['event_date']; ## Set event_date to a variable
   $events[$event_date] = array( 'title' => $line['title'], 'event_date' => $event_date );  ###add new value to new array with key value
}
var_dump($events);  ##display the reults

祝好運!

你為什么要執行

$events = array(); ## Declare the new array.

你的里面while 每次迭代基本上都會刪除先前迭代中的所有數據集。 只需將那行放在您的while上方(外面,住一個),然后在endwhile之后將var_dump($events)放在endwhile

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM