簡體   English   中英

PHP多維數組

[英]PHP Multi-dimensional arrays

我正在試圖讓我的思緒解決這個問題。 我曾經使用過數組,但我似乎在PHP中苦苦掙扎。 相信我,我已經在這里和其他地方查看了問題,所以我為這個問題的基本概率提前道歉。 我要做的是創建一個數組的數組???

基本上,我正在嘗試創建一個會話全局變量,以便它存儲一個數組,並且可以不斷添加。

$_SESSION['school'] = array('events' => array());

events數組的例子是:

events['name'] = 'Homecoming';
events['date'] = 'December 15, 2012';
events['cost'] = 18.00;
events['attending'] = array();
events['attending'][$i] = 'John'

那么使用就可以了

echo $_SESSION['school'][$i][events]['name']; 
echo $_SESSION['school'][$i][events]['date']; 
echo $_SESSION['school'][$i][events]['cost'];

...

我已經嘗試過如上所述創建它並像這樣填充(同樣是一個事件數組數組)

$_SESSION['school'] = array('events' => array());

$_SESSION['school'][$i][events]['name'] = 'Homecoming';
$_SESSION['school'][$i][events]['date'] = 'December 15, 2012';
$_SESSION['school'][$i][events]['cost'] = 18.00;
$_SESSION['school'][$i][events]['people'] = array('jane', 'john', 'bill');

這似乎不起作用,因為我可以告訴計數正在上升,因為它正在填充。 我嘗試了其他一些方法,但由於某種原因,我無法弄明白。 我遇到的大多數例子看起來都不像我正在嘗試的那樣。 任何幫助將不勝感激。

--------基於反饋的更新問題--------我認為我非常接近理解你的更新邏輯,我嘗試更新我的代碼,但我遇到了以下問題。 我有一個初始化PHP腳本,它設置$ _SESSION ['school'] = array(array());. 直到稍后才會填充這個,並且在某一點上我會對$ _SESSION ['school']進行計數檢查。 即使沒有添加任何內容,它也會在初始檢查中返回1。 但是,我假設它,因為它擁有一個空數組。 所以它讓我質疑結構。 由於我是一個視覺人,這是我認為我需要的,但我不知道如何構建它。

//would be an 1 dimensional array that empty until a school is added later on in code.
$_SESSION['school'] = array();

它的元素將包含一個帶元素的多維數組

['name'] = 'Johnson High';
['address'] = '121 elm';
['city'] = 'san jose';
['state'] = 'California';
['events'] = array();

['events']是空的,直到添加了事件,但這里有一些項目

['events']['name'] = 'homecoming';
['events']['date'] = 'December 15, 2012';
['events']['cost'] = '18.00';

最后,$ _SESSION ['學校']可以容納1到多所學校,我可以通過。

現在我對danL更新邏輯的誤解,我不知道名稱和事件將如何具有相同的索引? 當我查看代碼時,我感覺到$ _SESSION ['school']看起來像這樣

$_SESSION['school']{ 'name' => 'Johnson High',
                     'events' => array('basketball', 'soccer', 'football'),
                     'name' => 'West Forsyth High',
                     'events' => array('basketball', 'soccer', 'football')};

如果是這種情況,那么每個元素都處於不同的索引。 我必須在這里遺漏一些基本的東西。 我不斷嘗試閱讀並與我做錯的事情聯系起來。 我想我只是從錯誤的角度看問題。

如果鍵不是數字鍵,則需要將鍵放在引號中,如下所示:

$_SESSION['school']['events']['name'] = 'Homecoming';

但如果你想做像你這樣做的事情:

echo $_SESSION['school'][$i]['events']['name'];

那么你需要像這樣聲明你的$ _SESSION ['school']變量:

$_SESSION['school'] = array(array('events' => array()));

如果你注意到,你宣布$ _SESSION ['school']數組的方式,只有3個維度,但你試圖在你使用$ i變量引用索引里面的部分中訪問4個維度數組。

更新:這是您將事件添加到空學校陣列的方式

$_SESSION['school'] = array(array());
$_SESSION['school'][]['name'] = 'Johnson High';
$_SESSION['school'][]['events'] = array('basketball', 'soccer', 'football');
$_SESSION['school'][]['name'] = 'West Forsyth High';
$_SESSION['school'][]['events'] = array('theater', 'football', 'lacrosse');

然后你可以像這樣循環遍歷它們:

for($i = 0; $i < sizeof($_SESSION['school']); $i++) {
   echo 'School name: ' . $_SESSION['school'][$i]['name'] . '<br />';
   echo 'Events:<br />';
   foreach($_SESSION['school'][$i]['events'] as $event) {
      echo $event . '<br />';
   }  
   echo '<br />';
}

這將輸出:

School name: Johnson High
Events:
basketball
soccer
football

School name: West Forsyth High
Events:
theater
football
lacrosse

我希望這就是你所要求的。 對不起,如果我不明白你想要達到的目標。

好的,所以基於danL的幫助(非常感謝)。 我已經弄明白了我需要做什么。 所以在我設置的初始化腳本中,

$_SESSION['school'] = array();

在進一步處理之后,我創建了一個事件數組來存儲信息。

$event = arra();
$event['name'] = 'Homecoming';
$event['date'] = 'December 15, 2012';
$event['cost'] = '18.00';
$event['people'] = array();
$event['people'] = { 'john', 'mary', 'mark', 'janice'};

最后兩行可能會連接成一行。

然后我將事件數組添加到學校數組中,

$_SESSION['school'][] = $event;

我不知道如何使用關聯數組如此輕松地旋轉,但感謝所有的幫助。

暫無
暫無

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

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