0

以下是我的 stdClass 对象的输出:

stdClass Object ( 
      [all] => 0 
      [book] => 0 
      [title] => 1 
      [author] => 1 
      [content] => 0 
      [source] => 0 
     )

我想将具有值的元素存储1在变量中。

假设,在上面的例子中,我想存储$a='author' . 'title'. 这是否可以通过使用foreach或任何其他整洁的方法来实现,而不是手动检查它们是否具有值1然后存储它们?

4

3 回答 3

1

单线解决方案:

$c = new stdClass();
$c->all = 0;
$c->book = 0;
$c->title = 1;
$c->author = 1;
$c->content = 0;
$c->source = 0;

$a = implode(',',  array_keys( array_filter( (array)$c) ) );

var_dump($a);

会产生

string(12) "title,author" 
于 2013-06-16T15:25:51.910 回答
1

我看到的最简单的方法是使用 foreach:

$myStdClass = /* ... */;
$a = '';

foreach ($myStdClass as $key => $value) {
    if ($value) {
        $a .= $key;
    }
}
于 2013-06-16T15:26:04.280 回答
0
<?
$result = '';
foreach($your_stdclass as $key => $value) {
 if($value == '1') {
  $result .= $key;
 }
}
echo $result;
?>

这似乎是你问的,虽然我不知道这有什么意义

于 2013-06-16T15:26:13.287 回答