【问题标题】:Getting data from Serialize data从序列化数据中获取数据
【发布时间】:2015-07-20 19:46:36
【问题描述】:

我想要做的是从序列化数据中获取数据。我在输入权力名称的地方得到了它,但我想做的是让它显示用户是否有权力。

这是序列化的数据

a:1:{s:6:"powers";a:1:{s:7:"profile";a:1:{s:3:"has";b:0;}}}

试图获取has的部分数据,但它只是获取了权力的名称。

PHP 代码

foreach ($c['powers'] as $a => $b) {
            echo $a;

}

$c['powers'] 是序列化数据的开始,您可以在此处看到s:6:"powers"

【问题讨论】:

  • 我做了$c = unserialize($dbUser['addons']);

标签: php serialization


【解决方案1】:

让我们看看它在未序列化时的样子:

var_export(unserialize('a:1:{s:6:"powers";a:1:{s:7:"profile";a:1:{s:3:"has";b:0;}}}'));

输出:

array (
  'powers' =>
  array (
    'profile' =>
    array (
      'has' => false,
    ),
  ),
)

所以'has' => false 不是c['powers'] 的元素,而是$c['powers']['profile'] 的元素

【讨论】:

  • 我怎样才能在我的网页上显示'has' => false, 的值?我需要让它成为权力的要素吗?
  • 例如,在您的循环中:foreach ($b as $c => $d) echo $c;(将回显“has”)
  • 我知道,但我正在尝试获取 false 的值,并在用户没有电源时让它返回,它不会在他们的电源显示下显示。
  • if(! $b['has']) do_not_show_power_under_power_displays() ?
  • 这行得通,但我不得不修复它,因为由于某种原因,添加了 ! 使其工作相反,就像如果设置 0 它会显示功率,当它设置为 1 时根本没有表现出实力。不得不删除感叹号。
【解决方案2】:
$coded = 'a:1:{s:6:"powers";a:1:{s:7:"profile";a:1:{s:3:"has";b:0;}}}';

$decoded = unserialize($coded);

 $has = $decoded['powers']['profile']['has'];

var_dump($has);

【讨论】:

    猜你喜欢
    • 2012-11-14
    • 2021-10-09
    • 2018-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多