Зацикливание объекта stdClass и получение содержимого в переменной

Ниже приведен вывод моего объекта stdClass:

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

Я хочу хранить элементы, которые имеют значение 1 в переменной.

Предположим, в приведенном выше примере я хочу сохранить $a='author' . 'title', Это возможно с помощью foreach или любой другой аккуратный подход, вместо ручной проверки для каждого, имеют ли они значение 1 или нет а потом их хранить?

3 ответа

Решение

Самый простой способ сделать это - использовать foreach:

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

foreach ($myStdClass as $key => $value) {
    if ($value) {
        $a .= $key;
    }
}

Однострочное решение:

$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" 
<?
$result = '';
foreach($your_stdclass as $key => $value) {
 if($value == '1') {
  $result .= $key;
 }
}
echo $result;
?>

кажется, это то, что вы спрашиваете, хотя я не знаю, как это имеет смысл

Другие вопросы по тегам