2013-02-15 38 views
0

我真的難住這一個。我有這個數組變量$banner_image_description。當我打印它時,我得到Array (['title'] => dafha ['price'] => adhfadhf)。現在使用字符串作爲數組索引PHP

,我想要做的是檢查值的長度,在「標題」,並確保它是大於2。所以,當我運行:

if (isset($this->request->post['banner_image'])) 
    { 
     foreach ($this->request->post['banner_image'] as $banner_image_id => $banner_image) 
     { 
      foreach ($banner_image['banner_image_description'] as $language_id => $banner_image_description) 
      { 
       print_r($banner_image_description); 
       echo('<br/>'); 
       if ((utf8_strlen($banner_image_description['title']) < 2) || (utf8_strlen($banner_image_description['title']) > 64)) 
       { 

        $this->error['banner_image'][$banner_image_id][$language_id] = $this->language->get('error_title'); 
       }     
      } 
     } 
    } 

我得到Notice: Undefined index: title和我不知道爲什麼。我認爲這是獲得「標題」價值的正確方法,我知道指數在那裏,價值在那裏。

我敢肯定的是,陣列正在通過發佈形式值填充:

if (isset($this->request->post['banner_image'])) 
{ 
    $banner_images = $this->request->post['banner_image']; 
} 

這裏是什麼形式值的樣子:

<input type="text" 
name="banner_image[<?php echo $image_row; ?>][banner_image_description][<?php echo $language['language_id']; ?>]['title']" 
value="<?php echo isset(
$banner_image['banner_image_description'][$language['language_id']]['title']) ? 
$banner_image['banner_image_description'][$language['language_id']]['title'] : ''; ?>" /> 
<img src="view/image/flags/<?php echo $language['image']; ?>" title="<?php echo $language['name']; ?>" /><br /> 
+0

是不是像'陣列([' 標題 '] => dafha [' 價格'] => adhfadhf)'或'Array(['title'] =>'dafha',['price'] =>'adhfadhf')'? – fedorqui 2013-02-15 22:45:25

+0

這是第一個。 – Nolski 2013-02-15 22:46:54

+0

BUt是你定義它的方式還是'print_r($ var)'的結果?因爲如果你正在定義它,應該是我說的第二種方式。 – fedorqui 2013-02-15 22:48:52

回答

1

這是一個警告,它是可憐編程,但不會破壞任何東西。

這樣做,它將確保密鑰已設置並具有值。請記住,如果沒有設置此鍵,那麼該鍵沒有值,那麼您的echo語句將不會被觸發。

if (isset($banner_image_description['title']) && (utf8_strlen($banner_image_description['title']) < 2)) 
{ 
    echo 'too short!'; 
} 
+0

這不能回答任何問題。拋出錯誤的事實意味着沒有設置密鑰。然而,當我打印它顯示密鑰已設置。 – Nolski 2013-02-15 23:00:03

+0

考慮到你甚至沒有發佈數組是如何填充的,我不得不假設。請張貼這個數組是如何填充的,我可以幫助你進一步。你缺乏編程能力就是爲什麼會出現這種情況。你在互相嵌套foreach。這樣做會影響性能並使您的代碼sl。不馴。重寫它。 另外我敢打賭,通過實現我的上述代碼,它將修復錯誤。 – Miverson 2013-02-15 23:04:54

+0

正如我在之前的評論中所說的那樣,預先編寫在OpenCart框架中的代碼,由於框架跨越了幾十個文件,我寧願不重寫框架的一半。我會在我認爲正在初始化的地方更新我的問題。 – Nolski 2013-02-15 23:16:28

0

var_dump()透露,關鍵是包括 '所以if語句應設置爲

if ((utf8_strlen($banner_image_description["'title'"]) < 2) || (utf8_strlen($banner_image_description["'title'"]) > 64))