PHP: Как превратить массив в объект StdClass?

существует атрибут maxlength

<input type="text" name="textboxname" maxlength="100" />
5
задан Andrew 11 December 2009 в 00:52
поделиться

3 ответа

Почему бы просто не применить его?

$myObj = (object) array("name" => "Jonathan");
print $myObj->name; // Jonathan

Если он многомерный, Ричард Кастера предлагает следующее решение в своем блоге :

function arrayToObject($array) {
  if(!is_array($array)) {
    return $array;
  }
  $object = new stdClass();
    if (is_array($array) && count($array) > 0) {
      foreach ($array as $name=>$value) {
        $name = strtolower(trim($name));
          if (!empty($name)) {
            $object->$name = arrayToObject($value);
          }
      }
      return $object; 
    } else {
      return FALSE;
    }
}
10
ответ дан 18 December 2019 в 14:47
поделиться

Если это одномерный массив, приведение должно работать:

$obj = (object)$array;
3
ответ дан 18 December 2019 в 14:47
поделиться

Это работает для меня

if (is_array($array)) {
$obj = new StdClass();
foreach ($array as $key => $val){

    $key = str_replace("-","_",$key) 

    $obj->$key = $val;
}
$array = $obj;
}

убедитесь, что str_replace присутствует, поскольку '-' не допускается в именах переменных в php, а также:

Правила именования переменных

* A variable name must start with a letter or an underscore "_"
* A variable name can only contain alpha-numeric characters and underscores (a-z, A-Z, 0-9, and _ )
* A variable name should not contain spaces. If a variable name is more than one word, it should be separated with an underscore ($my_string), or with capitalization ($myString)

Итак, поскольку они разрешены в массивах, если какой-либо из них входит в ключ $ из массива, который вы конвертируете, у вас будут неприятные ошибки.

0
ответ дан 18 December 2019 в 14:47
поделиться
Другие вопросы по тегам:

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