php从foreach循环中获取前三个字符

时间:2014-05-24 19:04:10

标签: php arrays foreach json

我有这段代码:

$arr = json_decode($jsondata, TRUE);
$arr2 = $arr['items']['item'];
echo '<ul>';
foreach ($arr2 as $val) {
echo '<li>'.$val[description].'</li>';
}
echo '</ul>';

哪个输出:

  • Ann(2014年5月24日 - 2015年5月23日)
  • 滞纳金(2014年5月18日新增)

我只想将'Ann'存储在变量说$ plan中。我似乎无法完成这件事。我怎么能这样做?

2 个答案:

答案 0 :(得分:0)

首先,我会稍微清理PHP代码。你永远不应该在PHP中编写纯HTML。

<?php
$arr = json_decode($jsondata, TRUE);
$arr2 = $arr['items']['item'];
?>
<ul>
    <?php foreach ($arr2 as $val): ?>
    <?php $plan = explode('(', $val[description])[0] ?>
    <li><?php echo $val[description] ?></li>
    <?php endforeach ?>
</ul>

使用explode('(', $val[description])[0]),您将获得(之前的第一部分。 $plan将在第一次迭代后Ann投标Late Fee

答案 1 :(得分:0)

我想你想在第一个“(”之前)获得所有内容。“这不一定是前3个字符。

function get_everything_before_paren_open($str)
{
    $p = strpos($str, '(');
    if($p === FALSE) {
        return $p;
    } else {
        return rtrim(substr($str, $p-1));
    }
}

然后您可以将代码编写为

$arr = json_decode($jsondata, TRUE);
$arr2 = $arr['items']['item'];
echo '<ul>';
foreach ($arr2 as $val) {
    $plan = get_everything_before_paren_open($val["description"]);
    echo '<li>'.$plan.'</li>';
    // Position 1
}
echo '</ul>';

这将输出

  • 滞纳金

如果您只想输出“Ann”,只需在代码中添加break;而不是// Position 1。然后“Ann”将被放入$plan

顺便说一句,你应该引用“描述”。