-4

我已经构建了一个小脚本来检查 '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. 如果有办法改进我的脚本(我正在学习并且确信我没有尽可能地做事)。

谢谢

4

3 回答 3

1

为了回答您的(2),更好的方法是查看正则表达式

你可以用两行代码做你正在尝试的事情

preg_match('/,158\+(\d+)/', $cart_check, $output);
$cart_check_row_id = (empty($output[1])) ? 0 : $output[1];
于 2013-05-31T09:50:45.040 回答
1
$cart_check_row_id = 
    preg_match('@(?:\\A|,)158\\+(\\d++)@', trim($cart_check)) ?
    (int)$matches[1] :
    false
;
于 2013-05-31T10:12:41.217 回答
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

于 2013-05-31T09:47:20.010 回答