更新:
如果我从第67行和第68行删除$1
,则所有未确认的偏移2错误都将消失
只有一个未定义的偏移1错误,即没有x返回的var为" custom"
<?php list($w, $h, $1) = OX_Tools::explode_format($sformat); // Line 67?>
<option<?php echo ($adformat == $sformat ? ' selected="selected"' : ''); ?> value="<?php echo $sformat; ?>"> <?php printf($formats['formats'][$sformat], $w, $h, $1); ?></option>
// Changed to This
<?php list($w, $h) = OX_Tools::explode_format($sformat); // Line 67?>
<option<?php echo ($adformat == $sformat ? ' selected="selected"' : ''); ?> value="<?php echo $sformat; ?>"> <?php printf($formats['formats'][$sformat], $w, $h); ?></option>
需要一些帮助
我得到未定义的偏移:当值是一个单词&#34; custom&#34;
我得到Undefined offset:2,当值是由函数OX_Tools::explode_format
执行的x分隔的数字时
我已经在这个网站和其他网站上阅读过几十个帖子,并尝试了几种解决方案,但在我的情况下没有运气。此时不确定还有什么可以尝试的。任何想法将不胜感激。谢谢
$sformat
后explode_format
的结果
728x90的 468x60的
160x600的 120x600的
300x250的 为125x125
定制
$sformats
print_r($sformats);
Array
(
[0] => 728x90
[1] => 468x60
)
Array
(
[0] => 728x90
[1] => 468x60
)
Array
(
[0] => 160x600
[1] => 120x600
)
Array
(
[0] => 160x600
[1] => 120x600
)
Array
(
[0] => 300x250
[1] => 125x125
)
Array
(
[0] => 300x250
[1] => 125x125
)
Array
(
[0] => custom
)
$formats
print_r($formats);
Array
(
[data] => Array
(
[all] => Array
(
[horizontal] => Array
(
[0] => 728x90
[1] => 468x60
)
[vertical] => Array
(
[0] => 160x600
[1] => 120x600
)
[square] => Array
(
[0] => 300x250
[1] => 125x125
)
[custom] => Array
(
[0] => custom
)
)
)
[types] => Array
(
[text] => Text ads
[image] => Image ads
[ref_text] => Text referrals
[ref_image] => Image referrals
[textimage] => Text and image ads
[link] => Ad links
[video] => Video ads
[all] => All ad types
)
[sections] => Array
(
[horizontal] => Horizontal
[vertical] => Vertical
[square] => Square
[other] => Other ad formats
[custom] => Custom width and height
)
[formats] => Array
(
[728x90] => %1$s x %2$s Leaderboard
[468x60] => %1$s x %2$s Banner
[160x600] => %1$s x %2$s Wide Skyscraper
[120x600] => %1$s x %2$s Skyscraper
[300x250] => %1$s x %2$s Medium Rectangle
[125x125] => %1$s x %2$s Button
[custom] => Custom width and height
)
)
错误在第67行,这里是代码
<?php foreach ($sformats as $sformat) : ?>
<?php list($w, $h, $l) = OX_Tools::explode_format($sformat); //Line 67?>
<option<?php echo ($adformat == $sformat ? ' selected="selected"' : ''); ?> value="<?php echo $sformat; ?>"> <?php printf($formats['formats'][$sformat], $w, $h, $l); ?></option>
<?php endforeach; ?>
这是函数OX_Tools::explode_format
<?php
static function explode_format($format)
{
$vars = preg_split("/[x#]+/", $format);
return $vars;
}
?>
答案 0 :(得分:0)
这就是我提出的解决方案。对不起有些人不喜欢这个问题。也许是因为我没有提供一个可执行的例子或类似的问题,过去曾被问过,那与我的完全一样。
我已经在Stack上找到了很多解决问题的方法,并意识到我没有回馈过,所以我打算花更多的时间在网站上并尝试贡献。
够了!我在等着看是否有人会说你错过了这个something
我正在查看列表中的$1
变量并试图找出原因!这个项目中有38个文件,不包括javascript和语言文件,它必须存在于以前的作者中删除的内容。
当我从第67行和第68行的$1
中删除list($w, $h, $l)
时,除了一个错误之外,所有错误和代码都按照预期执行。
正如我在更新中所述,这给我留下了一个未定义的偏移错误,并且必须与不匹配preg_split()
函数可匹配的变量相关。
我尝试的是if $sformat != ‘custom’
它会使用preg_split()
并清除所有错误。我测试了插件的其余部分,没有错误。大!由于用户可以创建自己的格式命名,因此任何他们想要匹配custom
的东西都不好。我使用preg_match()
函数来消除任何不符合要求的变量。
这是原始的第67行
<?php list($w, $h, $l) = OX_Tools::explode_format($sformat); ?>
我把它改成了
<?php if (!preg_match("/[0-9]x[0-9]/", $sformat)) {$sformat = $sformat;}else{list($w, $h) = OX_Tools::explode_format($sformat); } ?>
如果您发现我的解决方案存在问题,请发表评论
感谢@MarcosPérezGude发表评论,但是如果它explode("x", $var)
那么容易,我就不会问人们不喜欢的问题,也不会受到启发参加Stackoverflow社区的更多信息
每天都住,就像你最后一次......有一天会是!