【问题标题】:php associative array, preg_match and loopphp关联数组,preg_match和循环
【发布时间】:2014-03-21 11:49:49
【问题描述】:

我有一个关联数组,我用正则表达式从中提取两个数字

<?php           
 $link = array (
 "model_one" => "Only 50.95 usd for 2 years or 700.30 usd.",
 "model_two" => "Only 70.95 usd for 2 years or 900.20 usd.");
 foreach ($link as $key=>$links) {
    $pattern = '/.\d+(?:\.\d{2})?((?<=[0-9])(?= usd))/';
    preg_match_all($pattern,$links,$result);
    $final = array();
    foreach($result[0] as $k=>$v) {
    $final[]=$v;
    echo $final[0]; // print 50.95 50.95 70.95 70.95    
    }
 }
?>

我无法检索与键关联的每个数字

例子:

model_one 50.95
model_one 700.30
model_two 70.95
model_two 900.20

【问题讨论】:

    标签: php arrays associative


    【解决方案1】:

    你需要遍历包含匹配值的数组:

    foreach ($link as $key => $links) {
        $pattern = '/\d+(?:\.\d{2})?((?<=[0-9])(?= usd))/';
        preg_match_all($pattern,$links,$result);
    
        foreach ($result[0] as $amt) {
            echo "$key $amt\n";
        }
    }
    

    请注意,我还删除了正则表达式开头的句点字符 (.)。它将匹配任何不是空格的字符。这将导致捕获在开头包含一个空格。

    输出:

    model_one 50.95
    model_one 700.30
    model_two 70.95
    model_two 900.20
    

    Demo

    【讨论】:

    • 非常感谢麦莉的回复。通过这种方式,我将 model_ 关联到两个数字:model_one 50.95 和 700.30。如何单独选择一个数字放入数据库:INSERT INTO ... (col1, col2) VALUES (50.95, 700.30) 再次感谢
    • @user3332537:那你就不需要循环了。只需使用implode()。演示:eval.in/124440
    • @Amal Murali 好的,很好。如果我使用查询来更新单个值的另一个问题:UPDATE model_one SET first_price = 50.95 和 SET second_price = 700.30 我该怎么做
    • @user3332537:这些值存储在$result 数组中。你只需要访问它。查看演示:eval.in/124473(如果您还有任何问题,请以new question 的形式提出)
    • 感谢您的回答
    猜你喜欢
    • 2012-06-26
    • 1970-01-01
    • 2014-06-11
    • 2019-03-07
    • 1970-01-01
    • 2021-12-13
    • 2012-03-18
    • 1970-01-01
    • 2014-02-16
    相关资源
    最近更新 更多