【问题标题】:Splitting a SQL table row into php variables将 SQL 表行拆分为 php 变量
【发布时间】:2012-05-22 14:00:35
【问题描述】:

我的表格中有一行这样显示;

2:2/3:1/17:1/6:1/1:1/

我想知道如何将它们存储到 php 变量中,以便将它们显示给用户。 '/' 分隔元素,':' 分隔元素的各个部分。

我不知道这是否有意义,但就是这样;

itemID:quantity/itemID:quantity/itemID:quantity/

所以我想分离项目,然后将 itemID 和数量存储到变量中以显示给用户。

我尝试过使用explode功能;

$pieces = explode("/", $order_details);

但我不知道如何区分 itemID 和数量。

有什么帮助吗?

【问题讨论】:

  • 如果你标准化你的数据库,你就不会遇到这样的问题
  • 我认为您可以使用 explode(":", piece将它们全部组合成一个字符串。

标签: php sql variables explode


【解决方案1】:
$pieces = explode("/", rtrim($order_details, '/'));
$items = array();
foreach ($pieces as $piece)
{
    list($id, $qty) = explode(':', $piece);
    $items[$id] = $qty;
}

【讨论】:

  • 非常感谢。我将如何设置它以使 id = $id 和 quantity = $qty?
  • 只删除foreach循环的第二行。
  • 谢谢你完美的工作。还有一件事,无论如何它可以忽略字符串末尾的最后一个“/”吗?我收到一个错误,因为它正在寻找最后一项中的“:”,但没有。
  • 使用substr()rtrim() 将其剥离即可。有关示例,请参阅我的更新答案。
  • 你是个真正的绅士,伙计。谢谢。
【解决方案2】:

利用parse_str

<?php
$str = '2:2/3:1/17:1/6:1/1:1/';
$str = str_replace(array(':', '/'), array('=', '&'), $str);

parse_str($str, $vars);

/*
$vars now:
Array
(
    [2] => 2
    [3] => 1
    [17] => 1
    [6] => 1
    [1] => 1
)
*/

如果可能,将值作为serialized array 存储到您的表中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-14
    • 2017-08-02
    • 1970-01-01
    相关资源
    最近更新 更多