2012-11-25 69 views
1

警告:array_keys()預計參數1是陣列,串中的線 /home/hennacur/public_html/shop/wp-content/themes/montezuma/includes/image_meta.php 給出34警告在PHP代碼

警告:的foreach()在 /home/hennacur/public_html/shop/wp-content/themes/montezuma/includes/image_meta.php 上線提供參數無效40

            function bfa_image_size() { 
$meta = wp_get_attachment_metadata(); 
echo $meta['width']. '×' . $meta['height']; 
    } 


    function bfa_image_meta($args = '') { 

$defaults = array(
    'keys' => '', 
    'before' => '', 
    'after' => '', 
    'item_before' => '', 
    'item_after' => '', 
    'item_sep' => ' · ', 
    'key_before' => '', 
    'key_after' => ': ', 
    'value_before' => '', 
    'value_after' => '', 
    'display_empty' => FALSE  
); 

$r = wp_parse_args($args, $defaults); 
extract($r, EXTR_SKIP); 

$meta = wp_get_attachment_metadata(); 

$string_array = array(); 

     // All keys, alphabetically sorted, as provided by wp_get_attachment_metadata() 
if($keys == '') { 
    $array_keys = array_keys($meta['image_meta']); ---***line34***  
// Only keys specificed in parameter: 
} else { 
    $array_keys = array_map('trim', explode(',', $keys)); 
} 

foreach($array_keys as $key) { --***line 40*** 

    $value = $meta['image_meta'][$key]; 

    if($display_empty === TRUE || ($value != '' && $value != '0')) { 

     if($key == 'created_timestamp') 
      // Transform timestamp into readable date, based on default WP date/time settings: 
      $value = date(get_option('date_format') . ' - ' . get_option('time_format'), $value); 

     // Prettify key 
     $key = ucwords(str_replace('_', ' ', $key)); 
     $key = $key == 'Iso' ? 'ISO' : $key; 


     $key = str_replace( 
      array(
       'Aperture', 
       'Credit', 
       'Camera', 
       'Caption', 
       'Created Timestamp', 
       'Copyright', 
       'Focal Length', 
       'ISO', 
       'Shutter Speed', 
       'Title' 
      ), 
      array(
       __('Aperture', 'montezuma'), 
       __('Credit', 'montezuma'), 
       __('Camera', 'montezuma'), 
       __('Caption', 'montezuma'), 
       __('Timestamp', 'montezuma'), 
       __('Copyright', 'montezuma'), 
       __('Focal Length', 'montezuma'), 
       __('ISO', 'montezuma'), 
       __('Shutter Speed', 'montezuma'), 
       __('Title', 'montezuma') 
      ),  
      $key 
     ); 

我有上面的代碼。什麼可能是出現警告的原因?

+0

阻止將您的變量命名爲保留字 - 這只是一個良好的習慣,將來會讓您遠離錯誤。並添加'var_dump($ meta ['image_meta']);'以查看$ meta ['image_meta']的真實含義幷包含 –

回答

0

警告解釋這一切。

array_keys() expects parameter 1 to be array, string given告訴你一個字符串被傳遞給array_keys()而不是數組。因此,$meta['image_meta']可能不是數組。

因此,$array_keys未被設置爲數組,導致您的下一個警告,當您嘗試將foreach應用於它時。

+0

function bfa_image_size(){ \t $ meta = wp_get_attachment_metadata(); \t echo $ meta ['width']。 '×'。$元[ '高度']; } 功能bfa_image_meta(的$ args = ''){ \t $默認=陣列( \t \t '鍵'=> '', ' \t \t,「後\t \t '前'=>' '=> '', \t \t 'item_before'=> '', \t \t 'item_after'=> '', \t \t 'item_sep'=>' ·」, \t \t 'key_before'=> '', \t \t 'key_after'=> ':', \t \t 'value_before'=> '', \t \t 'value_after'=> '', \t \t 'display_empty'= > FALSE \t \t); \t $ r = wp_parse_args($ args,$ defaults); \t摘錄($ r,EXTR_SKIP); \t \t $ meta = wp_get_attachment_metadata(); \t \t $ string_array = array(); – karu

+0

@ karu:請不要在評論中放置代碼。它變得不可理解。另外...你想在這個評論中說什麼? – Dancrumb

+0

實際上它被定義爲一個數組 – karu

1

試試這個(你可以看到這個警告,因爲$ array_keys具有類型爲字符串或一些假)如果stetmen:

if(is_array($array_keys) && !empty($array_keys)) { // foreach stetment here }