1

警告:array_keys() 期望参数 1 是数组,字符串在第 34 行的 /home/hennacur/public_html/shop/wp-content/themes/montezuma/includes/image_meta.php 中给出

警告:在第 40 行的 /home/hennacur/public_html/shop/wp-content/themes/montezuma/includes/image_meta.php 中为 foreach() 提供的参数无效

                                                 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
        );

我有上面的代码。出现警告的原因可能是什么?

4

2 回答 2

1

试试这个(你可以看到这个警告,因为 $array_keys 的类型为字符串或其他)如果 stetmen:

 if(is_array($array_keys) && !empty($array_keys)) { // foreach stetment here }
于 2012-11-25T17:37:50.530 回答
0

警告说明了一切。

array_keys() expects parameter 1 to be array, string given告诉你一个字符串被传递给array_keys()而不是一个数组。

因此,$meta['image_meta']可能不是一个数组。

因此$array_keys,当您尝试应用它时,不会将其设置为数组,从而导致您的下一个警告foreach

于 2012-11-25T17:38:44.807 回答