PHP版本的数组差异

时间:2016-07-01 16:02:18

标签: php arrays

我遇到了不同版本的PHP数组的一些问题。我正在为wordpress主题创建一个自定义组合页面,它使用最新的PHP版本在localhost上完美运行。但是当我想在网上尝试时,我收到了一个错误:

  

解析错误:语法错误,意外' [',期待','或';'在/wordpress/wp-content/themes/theme/functions.php第72行

服务器正在运行PHP版本4.0.10.14,我需要在那里安装组合。有没有办法将此行转换为与旧的PHP版本兼容,但是仍然可以在最新的PHP版本中使用它?

<img src="<?php echo get_post_meta(get_the_ID(), 'portfolio_imgs', 
 true)[$i]['url']; ?>" width="96" height="54"/>

以下是代码的完整部分:

$portfolio_array = get_post_meta(get_the_ID(), 'portfolio_imgs', true);
$arrlength = count($portfolio_array);
for ($i=0; $i<$arrlength; $i++) {
?>
<div class="uploaded_images" id="image_<?php echo "$i" ?>" 
            onClick="delete_image(<?php echo $i; ?>)">
    <img src="<?php echo get_post_meta(get_the_ID(), 'portfolio_imgs', 
             true)[$i]['url']; ?>" width="96" height="54"/>
    <input type="hidden" id="id<?php echo $i ?>" name="selection[]" value="keep"/>
</div>
<?php
}
?>

2 个答案:

答案 0 :(得分:1)

5.5之前的PHP(或5.4我不确定)不允许在函数调用后立即索引数组。

您的代码可以通过以下方式重写:

<?php
$src = get_post_meta(get_the_ID(), 'portfolio_imgs', true);
$src = $src[$i]['url'];
?>
<img src="<?php echo $src; ?>" width="96" height="54" />

答案 1 :(得分:1)

假设您的get_post_meta()函数返回一个有效数组,则以下内容应该有效:

$result = get_post_meta(get_the_ID(), 'portfolio_imgs', true);
<img src="<?php echo $result[$i]['url']; ?>" width="96" height="54"/>

您当前的版本正在使用PHP 5.4中引入的所谓“功能阵列解除引用”。