【问题标题】:How to get the key value of an array which is a string?如何获取字符串数组的键值?
【发布时间】:2019-07-22 18:35:53
【问题描述】:

我有一个看起来像数组的字符串,当我 var_dump 该变量时,我将它视为字符串。?

我已经完成了该字符串的编码和解码,使用 rtrim 和 ltrim 修剪空白,以便将其转换为数组。 var dump 显示字符串如下。

string(271) "

Array
(
    [0] => Array
        (
            [tmp_name] => F:\xampp\tmp\phpC90B.tmp
            [error] => 0
            [name] => development-km-technologies.jpg
            [type] => image/jpeg
            [size] => 55079
        )

)

" 

需要数组中任意键的值。

【问题讨论】:

  • 这很可能在某个时候是一个数组。您能否分享输出该变量的代码?还有上面的相关行。
  • 所以你想让看起来像数组的字符串变成真正的数组?
  • @Derek 是的,我想从字符串中取出数组
  • @waterloomatt 我在提交使用了 filepond fileuploader 的表单后收到了 in 请求。
  • 这看起来像$_FILES 全局数组的内容。有些东西正在将其转换为字符串。找到那个,然后你就会找到答案。没有看到代码就帮不上忙了。

标签: php arrays string


【解决方案1】:

由于我不记得在哪里找到此代码 sn-p 我将其发布为 wiki 答案。

此代码会将您的字符串数组转换为真正的数组。

function print_r_reverse($input)
{
    $output = str_replace(['[', ']'], ["'", "'"], $input);
    $output = preg_replace('/=> (?!Array)(.*)$/m', "=> '$1',", $output);
    $output = preg_replace('/^\s+\)$/m', "),\n", $output);
    $output = rtrim($output, "\n,");
    return eval("return $output;");
}


$in = '
Array
(
    [0] => Array
        (
            [tmp_name] => F:\xampp\tmp\phpC90B.tmp
            [error] => 0
            [name] => development-km-technologies.jpg
            [type] => image/jpeg
            [size] => 55079
        )

)';


$arr = print_r_reverse(trim($in));

它使用 eval 所以不要在不安全的字符串上使用它。

https://3v4l.org/7Kvg8

【讨论】:

  • 出现语法错误,意外'
  • 您的字符串中没有一个 <。你隐藏的东西
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-28
  • 2021-10-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-22
相关资源
最近更新 更多