Зацикливание объекта 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;
?>
кажется, это то, что вы спрашиваете, хотя я не знаю, как это имеет смысл