【问题标题】:PHP explode returns array with count 2 but gets undefined offset when accessing second element?PHP爆炸返回计数为2的数组但在访问第二个元素时获得未定义的偏移量?
【发布时间】:2016-12-20 11:56:27
【问题描述】:

我正在使用 php/mySQL/Apache。我有一个有两个位置的数组。

print_r($pair) returns Array ( [0] => Maria João [1] => 1 )

当我这样做时

$pair = explode("-",$b); 
if(count($pair)==2){ 
$investigador = $pair[0]; 
$ponderacao = $pair[1]; }

它有效。

当我这样做时

$pair = explode("-",$b); 
$investigador = $pair[0]; 
$ponderacao = $pair[1]; 

它返回“未定义的偏移量:1”

这是一个错误吗?

提前致谢。

【问题讨论】:

  • 你能在第二次尝试中var_dump 变量$b 吗?
  • $ponderacao = $pair[1];`这是问题'`'你注意到了吗?
  • 您是否有一个未包含在问题中的代码循环?如果是这样,很可能并非所有 pairs 都是分隔字符串,并且您在第一个示例中进行的检查是必需的。
  • 因为它适用于第一个条件,它应该适用于第二个条件。而且您正在多个场景中使用相同的字符串进行测试...您没有共享您正在测试的字符串。

标签: php undefined offset explode


【解决方案1】:

在 Explode 期间:可能字符串与您在 explode 中作为参考给出的任何内容不完全匹配,因此会发生通知。

试试这个,

$investigador = (isset($pair[0]) && $pair[0]!="")?$pair[0]:"";
$ponderacao = (isset($pair[1]) && $pair[1]!="")?$pair[1]:"";

例如,

$b = "Maria João-1";

<?php
$b = "Maria João-1";
$pair = explode("-",$b); 
echo $pair[0]."<br>";
echo $pair[1]; 
?>

输出:

Maria João
1

现在只需更改字符串并重试

$b = "Maria João_1";

<?php
$b = "Maria João_1";
$pair = explode("-",$b); 
echo $pair[0]."<br>";
echo $pair[1]; 
?>

输出:

玛丽亚·若昂_1

E_NOTICE : type 8 -- Undefined offset: 1 -- at line 12

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-02-16
    • 1970-01-01
    • 2019-06-05
    • 2016-06-26
    • 1970-01-01
    • 2012-06-20
    • 2013-04-22
    • 2013-06-08
    相关资源
    最近更新 更多