[PHP 학습 노트] 반사된 그룹을 바탕으로 실체 대상을 바꾸는 방안
15726 단어 PHP 학습 노트
최근에 데이터베이스에서 찾아낸 데이터를 대응하는 실체 대상으로 바꾸는 것이 필요하다. (사용자 정의 실체 대상)
php 그룹 회전 대상 네트워크에서 이런 방법을 제공했다
function array_to_object($arr)
{
if (gettype($arr) != 'array') {
return;
}
foreach ($arr as $k => $v) {
if (gettype($v) == 'array' || getType($v) == 'object') {
$arr[$k] = (object)array_to_object($v);
}
}
return (object)$arr;
}
$arr = ['name' => "aa", "id" => 3, "age" => ['name' => "aa", "id" => 3, "age" => 2]];
var_dump(array_to_object($arr));
돌릴 수 있지만 php의 그룹 돌림 대상은 더 간단하고 통속적일 수 있을 것 같다(json 서열화, 그리고 json 반서열화 대상)
var_dump(json_decode(json_encode($arr)));
이것은 단지 수조로 대상을 바꾸는 방안일 뿐이고 실체 대상(자신이 정의한 대상)을 바꾸려면 반사를 사용해야 한다. 다음은 간단한 실례를 제공한다.
/**
* Student
* Class Student
*/
class Student
{
private $name;
private $id;
/**
* @return mixed
*/
public function getName()
{
return $this->name;
}
/**
* @param mixed $name
*/
public function setName($name): void
{
$this->name = $name;
}
/**
* @return mixed
*/
public function getId()
{
return $this->id;
}
/**
* @param mixed $id
*/
public function setId($id): void
{
$this->id = $id;
}
}
/**
* 【1】 ,$reflectionClass
* 【2】 $obj
* 【3】 $obj
* 【4】 $obj ( , )
* @param array $arr
* @param string $className
*
* @return object
* @throws ReflectionException
*/
function arrayToSimpleObj(array $arr, string $className)
{
$reflectionClass = new ReflectionClass($className);
$obj = $reflectionClass->newInstance();
foreach ($arr as $key => $value) {
$property = $reflectionClass->getProperty($key);
$property->setAccessible(true);//
$property->setValue($obj, $value);
}
return $obj;
}
$arr = ['name' => "aa", "id" => 3];
try {
var_dump(arrayToSimpleObj($arr, Student::class));
} catch (ReflectionException $e) {
echo " ";
}
$arr = ['name' => "aa", "id" => 3, "age" => 2];
try {
var_dump(arrayToSimpleObj($arr, Student::class));
} catch (ReflectionException $e) {
echo " ";
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
[PHP 학습 노트] 반사된 그룹을 바탕으로 실체 대상을 바꾸는 방안최근에 데이터베이스에서 찾아낸 데이터를 대응하는 실체 대상으로 바꾸는 것이 필요하다. (사용자 정의 실체 대상) php 그룹 회전 대상 네트워크에서 이런 방법을 제공했다 돌릴 수 있지만 php의 그룹 돌림 대상은 더...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.