【问题标题】:How to convert STRING in ARRAY?如何在 ARRAY 中转换 STRING?
【发布时间】:2016-06-04 15:14:25
【问题描述】:

我的字符串是:

$string = 'fecha[d]';

如何将其转换为:

$fecha[d] = null;

$fecha[d] = false;

$fecha[d] = '';

我看到 filter_var_array(),但我没有找到如何使用它来将我的字符串转换为数组。

谢谢。

【问题讨论】:

  • 试试:$string = 'fecha["d"]'; eval("$$string = NULL;"); print_r($fecha);。但是 $string 应该是fecha['d']
  • 哦,谢谢,我的问题是这个 var 来自 GET,那么我不能冒这个风险:$_GET['string']
  • pastebin.com/KBnFkSgk,你也应该删除你的问题,这是一个糟糕的问题。
  • 如果你需要按你说的做,那你肯定是在编程中走错路了……
  • 任何时候你发现自己需要可变变量,你可能做错了什么。您应该改用关联数组。

标签: php arrays string


【解决方案1】:

你可以使用正则表达式来解析它。

preg_match('/^(\w+)\[(.+)\]$/', $string, $match);
$var = $match[1];
$index = $match[2];

并且您应该将值保存在关联数组中,而不是使用可变变量:

$myvars[$var][$index] = null;

但如果你真的想要一个变量变量,那就是:

${$var}[$index] = null;

【讨论】:

  • 我需要验证 $o(列表的顺序)。在 **strangeqargo** 的帮助下,我现在有了: if(!empty($_GET['o'])){ preg_match_all('/(.*)[(.*?)]/', $_GET[' o'], $k); if(!empty($k[1]) && !empty($k[2]))$o[$k[1][0]] = $k[2][0];否则 $o = 数组(); } 否则 $o = 数组();这是我要求的一个很好的解决方案。谢谢 strangeqargo !! :) 还要感谢巴曼! :) 现在我有:ORDER BY name ASCORDER BY name DESC 有什么想法吗?我尝试添加回复,但这个网站不接受我的... :'(
  • 我认为你的答案的最后一部分应该放在第一位。这有助于 OP 更好
  • @XHtml $o[$k[1][0]] 应该是 $o[$k[1]][$k[2]]。如果您像我在回答中所做的那样将这些分配给变量,会更容易。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-12-17
  • 2015-12-11
  • 2019-11-23
  • 2019-07-25
  • 2020-12-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多