иметь foreach внутри массива? [Дубликат]

В соответствии с @Antonio мы можем использовать одно свойство для доступа в качестве значения свойства readOnly публично и readWrite в частном порядке. Ниже приведена моя иллюстрация:

class MyClass {

    private(set) public var publicReadOnly: Int = 10

    //as below, we can modify the value within same class which is private access
    func increment() {
        publicReadOnly += 1
    }

    func decrement() {
        publicReadOnly -= 1
    }
}

let object = MyClass()
print("Initial  valule: \(object.publicReadOnly)")

//For below line we get the compile error saying : "Left side of mutating operator isn't mutable: 'publicReadOnly' setter is inaccessible"
//object.publicReadOnly += 1

object.increment()
print("After increment method call: \(object.publicReadOnly)")

object.decrement()
print("After decrement method call: \(object.publicReadOnly)")

И вот вывод:

  Initial  valule: 10
  After increment method call: 11
  After decrement method call: 10
8
задан user319940 21 January 2013 в 21:55
поделиться

3 ответа

Это недопустимый синтаксис. Сначала вам нужно будет создать «родительские» части массива. THEN добавьте в материал подматрицы с циклом foreach:

$foo = array(
    'label' => 'Assign to user',
    'desc' => 'Choose a user',
    'id' => $prefix.'client',
    'type' => 'radio',
    'options' => array()
);

foreach ($clients as $user) {
    $foo['options'][] = array (  
        'label' => $user->user_login,  
        'value' => $user->user_login,
    );
}
15
ответ дан Marc B 21 August 2018 в 20:39
поделиться
  • 1
    К сожалению, это не работает для меня как массив foo, находится в самом массиве, который дает ошибку Parse error: синтаксическая ошибка, неожиданный T_FOREACH, ожидающий ')' – user319940 21 January 2013 в 22:34
  • 2
    Вам не нужно делать «опции» array(), если есть вероятность, что он не будет заполнен. Это может отбросить некоторые парсеры, чтобы увидеть пустое значение (т. Е. Схему json-ld). – dhaupin 10 February 2016 в 20:01

Вы не можете использовать foreach в определении массива. Однако вы можете поместить переменную $clients в массив или вы можете за пределами массива вывести массив, который будет вставлен на клавишу options

1
ответ дан Cody Covey 21 August 2018 в 20:39
поделиться

Вы используете foreach для доступа к данным, а не для определения.

Попробуйте это:

array(
    'label' => 'Assign to user',
    'desc' => 'Choose a user',
    'id' => $prefix.'client',
    'type' => 'radio'
    'options' => $clients
    )

Если вам нужно изменить структуру данных для «параметров», сделайте это до определения первичного массива.

1
ответ дан ste 21 August 2018 в 20:39
поделиться
  • 1
    При таком подходе, как я могу заставить $ clients быть массивом массивов? извините, если это звучит немного плотно! – user319940 21 January 2013 в 22:08
  • 2
    Сначала определите $ clients [code] $ clients = array (array ('oneval', 'two'), array ('another', 'another')); [/ code], а затем просто укажите $ clients в вашем первичный массив – ste 21 January 2013 в 22:13
  • 3
    но мне нужно получить значения, используя цикл foreach, поскольку клиенты используются для запроса wordpress: $ clients = get_users (); – user319940 21 January 2013 в 22:17
  • 4
    Затем убедитесь, что вы заполнили массив с ожидаемой структурой и назначили его клиентам $ - или попросите ответ Марка; одинаковый подход, разный порядок – ste 21 January 2013 в 22:21
  • 5
    Не совсем уверен, что вы подразумеваете под этим, к сожалению, код Марка не работает в моей ситуации (см. Комментарий), спасибо за вашу помощь. – user319940 21 January 2013 в 23:01
Другие вопросы по тегам:

Похожие вопросы: