未定义的偏移量1

时间:2013-05-31 09:40:25

标签: php

我已经构建了一个小脚本来检查'158'是否在字符串中,如果是,则输出一些东西。

如果'158'不在字符串中,我会不断收到php通知消息:

  

消息:未定义的偏移量:1

$cart_check = '145+0,159+1,197+3,';

$cart_check = trim($cart_check, ',');

$cart_check = explode(',', $cart_check);

$check_entry_id_exists = '';
$key = '0';

if (array_search(158, $cart_check)) {
    $check_entry_id_exists = 'yes';
    $key = array_search(158, $cart_check);
}

$cart_check_row_id = explode("+", $cart_check[$key]);

$cart_check_row_id = $cart_check_row_id[1];

我无法弄清问题是什么,任何人都可以查看我的代码并看到:

  1. 通知显示的原因是什么。
  2. 如果有办法改善我的剧本(我正在学习,并确信我没有尽可能做得最好)。
  3. 谢谢

3 个答案:

答案 0 :(得分:1)

回答你的(2),更好的方法是看regular expressions

你可以用2行代码

来做你正在尝试的事情
preg_match('/,158\+(\d+)/', $cart_check, $output);
$cart_check_row_id = (empty($output[1])) ? 0 : $output[1];

答案 1 :(得分:1)

$cart_check_row_id = 
    preg_match('@(?:\\A|,)158\\+(\\d++)@', trim($cart_check)) ?
    (int)$matches[1] :
    false
;

答案 2 :(得分:0)

我运行了你的代码并找到了字符串“145 + 0,157 + 1,197 + 3”的答案。

$ cart_check = explode(',',$ cart_check); print_r($ cart_check)输出为,

阵 (     [0] => 145 + 0     [1] => 157 + 1     [2] => 197 + 3 )

$ cart_check_row_id = explode(“+”,$ cart_check [$ key]); 的print_r($ cart_check_row_id);输出为: 排列 (     [0] => 145     [1] => 0 )

$ cart_check_row_id = explode(“+”,$ cart_check [$ key]); 的print_r($ cart_check_row_id);输出为,

0