Помимо упомянутых причин (назначение цепочки, set-and-test внутри цикла while и т. д.), правильно используйте инструкцию using
, в которой эта функция нужна:
using (Font font3 = new Font("Arial", 10.0f))
{
// Use font3.
}
MSDN препятствует объявлению одноразового объекта вне оператора using, так как он будет оставаться в области видимости даже после его размещения (см. статью I статьи MSDN).
Вы можете сделать это:
<?php
$output = array_filter($array, function (array $studentDays) {
foreach ($studentDays as $day) {
// if there is a *non-empty* day, we return early and keep the whole record
if (! empty($day)) {
return true;
}
}
// only empty days, so discard the record
return false;
});
Цикл по массиву и применить array_filter
$array = [
'Alex' => [
[
['event' => 'eventName1'],['event' => 'eventName2']
],
[
['event' => 'eventName3'],['event' => 'eventName4']
],
[
['event' => 'eventName5'],['event' => 'eventName6']
],
[
['event' => 'eventName7'],['event' => 'eventName8']
],
[],
[],
[]
],
'christoper'=>[
[],[],[],[],[],[],[]
]
];
foreach( $array as $key => $value ){
$array[$key] = array_filter($value);
}
print_r( $array );
Рекурсивный вызов array_filter
выполнит эту работу; во внешнем вызове мы проверяем размер возвращаемого массива, чтобы решить, сохранять ли этот элемент или нет (это будет 0, если массив состоял исключительно из пустых массивов, как это происходит для 'christopher'):