相关疑难解决方法(0)

如何在PHP中将数组转换为对象?

我怎样才能将这样的数组转换为对象?

    [128] => Array
        (
            [status] => Figure A.
 Facebook's horizontal scrollbars showing up on a 1024x768 screen resolution.
        )

    [129] => Array
        (
            [status] => The other day at work, I had some spare time
        )

)

php arrays casting object

329
推荐指数
21
解决办法
63万
查看次数

将stdClass对象转换/转换为另一个类

我正在使用第三方存储系统,它只返回我的stdClass对象,无论我输入什么因为一些不明原因.所以我很想知道是否有办法将stdClass对象转换/转换为给定类型的完整对象.

例如,有些东西:

//$stdClass is an stdClass instance
$converted = (BusinessClass) $stdClass;
Run Code Online (Sandbox Code Playgroud)

我只是将stdClass转换为数组并将其提供给BusinessClass构造函数,但也许有一种方法可以恢复我不知道的初始类.

注意:我对"更改您的存储系统"类型的答案不感兴趣,因为它不是您感兴趣的点.请将其视为关于语言能力的学术问题.

干杯

php stdclass

86
推荐指数
6
解决办法
9万
查看次数

将数组的var_dump转换回数组变量

直到今天我才真正想过这个,但在搜索网络后我并没有真正找到任何东西.也许我没有在搜索中对其进行措辞.

给定一个数组(多维或不多):

$data = array('this' => array('is' => 'the'), 'challenge' => array('for' => array('you')));
Run Code Online (Sandbox Code Playgroud)

var_dumped时:

array(2) { ["this"]=> array(1) { ["is"]=> string(3) "the" } ["challenge"]=> array(1) { ["for"]=> array(1) { [0]=> string(3) "you" } } }
Run Code Online (Sandbox Code Playgroud)

挑战在于:将数组重新编译为PHP的可用数组的最佳优化方法是什么?就像一个undump_var()功能.数据是否全部作为浏览器输出的一行,或者是否包含换行符作为输出到终端.

这只是正则表达式的问题吗?或者还有其他方式吗?我在寻找创造力.

更新:注意.我熟悉序列化和反序列化的人.我不是在寻找替代解决方案.这是一个代码挑战,看看它是否可以以优化和创造性的方式完成.所以serialize和var_export不是这里的解决方案.它们也不是最好的答案.

php var-dump

43
推荐指数
4
解决办法
3万
查看次数

不能使用带有数字键作为字符串的PHP数组

我有一个PHP数组,其数字键作为字符串类型.

但是当我尝试访问它们时,PHP会给我一个未定义的索引错误.

$a = (array)json_decode('{"1":1,"2":2}');
var_dump($a);
var_dump(isset($a[1]));
var_dump(isset($a["1"]));
var_dump($a[1]);
var_dump($a["1"]);
Run Code Online (Sandbox Code Playgroud)

输出:

array (size=2)
    '1' => int 1
    '2' => int 2

boolean false

boolean false

ERROR: E_NOTICE: Undefined offset: 1

null

ERROR: E_NOTICE: Undefined offset: 1

null

我如何访问这些值?

演示:http://codepad.viper-7.com/8O03IM

php arrays json

28
推荐指数
3
解决办法
9837
查看次数

将多维对象转换为数组

我正在使用亚马逊产品广告API.值作为多维对象返回.

它看起来像这样:

object(AmazonProduct_Result)#222 (5) {
  ["_code":protected]=>
  int(200)
  ["_data":protected]=>
  string(16538) 
array(2) {
    ["IsValid"]=>
    string(4) "True"
    ["Items"]=>
    array(1) {
      [0]=>
      object(AmazonProduct_Item)#19 (1) {
        ["_values":protected]=>
        array(11) {
          ["ASIN"]=>
          string(10) "B005HNF01O"
          ["ParentASIN"]=>
          string(10) "B008RKEIZ8"
          ["DetailPageURL"]=>
          string(120) "http://www.amazon.com/Case-Logic-TBC-302-FFP-Compact/dp/B005HNF01O?SubscriptionId=AKIAJNFRQCIJLTY6LDTA&tag=*********-20"
          ["ItemLinks"]=>
          array(7) {
            [0]=>
            object(AmazonProduct_ItemLink)#18 (1) {
              ["_values":protected]=>
              array(2) {
                ["Description"]=>
                string(17) "Technical Details"
                ["URL"]=>
                string(217) "http://www.amazon.com/Case-Logic-TBC-302-FFP-Compact/dp/tech-data/B005HNF01O%3FSubscriptionId%3DAKIAJNFRQCIJLTY6LDTA%26tag%*******-20%26linkCode%3Dxm2%26camp%3D2025%26creative%3D386001%26creativeASIN%3DB005HNF01O"
              }
            }
            [1]=>
            object(AmazonProduct_ItemLink)#17 (1) {
              ["_values":protected]=>
              array(2) {
Run Code Online (Sandbox Code Playgroud)

我的意思是它也有对象内的数组.我想将它们全部转换为多维数组.

php arrays multidimensional-array

21
推荐指数
3
解决办法
3万
查看次数

将数组中的数组和对象转换为纯数组

我的数组如下:

Array
(
    [0] => stdClass Object
        (
            [id] => 1
            [name] => demo1
        )
    [1] => stdClass Object
        (
            [id] => 2
            [name] => demo2
        )
    [2] => stdClass Object
        (
            [id] => 6
            [name] => otherdemo
        )
)
Run Code Online (Sandbox Code Playgroud)

如何将整个数组(包括对象)转换为纯多维数组?

php arrays

20
推荐指数
3
解决办法
2万
查看次数

任何PHP函数会剥离一个null的对象的属性?

我正在返回从ORM中提取的对象数组的json_encode().它包含许多具有空值的属性.删除这些null属性的最佳方法是什么?我想我可以迭代属性,看看它们是否为null然后取消设置()该属性,但肯定必须有更优雅的方式?

php oop json

18
推荐指数
2
解决办法
1万
查看次数

将laravel对象转换为数组

Laravel输出:

Array
(
    [0] = stdClass Object
    (
        [ID] = 5

    )

    [1] = stdClass Object
    (
        [ID] = 4

    )

)
Run Code Online (Sandbox Code Playgroud)

我想将其转换为普通数组.只是想删除它stdClass Object.我也试过使用->toArray();但是我收到了一个错误:

在非对象上调用成员函数toArray().

我怎样才能解决这个问题?

功能已在http://www.srihost.com上实施

php arrays laravel laravel-4 laravel-3

18
推荐指数
8
解决办法
12万
查看次数

在php中使用implode for stdClass对象

foreach($categories as $category)
{
    print_r($category);
}
Run Code Online (Sandbox Code Playgroud)

上面的代码给出了以下结果.

stdClass Object
(
    [category_Id] => 4
    [category_Title] => cat 4
)
stdClass Object
(
    [category_Id] => 7
    [category_Title] => cat 7
)
stdClass Object
(
    [category_Id] => 6
    [category_Title] => cat 6
)
Run Code Online (Sandbox Code Playgroud)

我该如何使用implode(', ' )以获得以下结果:

猫4,猫7,猫6

我用它,但是我收到了一个错误

php implode

9
推荐指数
3
解决办法
1万
查看次数

将stdClass对象转换为php中的关联数组

我需要转换这个数组

Array ( 
[0] => stdClass Object 
     ( [title] => primo ) 
[1] => stdClass Object 
     ( [title] => secondo )) 
Run Code Online (Sandbox Code Playgroud)

Array ( 
[primo] => primo
[secondo] => secondo ) 
Run Code Online (Sandbox Code Playgroud)

尝试了不同的选项,包括类型转换,仍然没有找到正确的解决方案

php arrays stdclass

5
推荐指数
1
解决办法
4844
查看次数

将stdClass转换为数组 - 键不可访问

当我做这样的事情时,我正在运行PHP7.0.9:

$s = json_decode('{"1": "xxx"}');//decode json to stdClass
$a = (array)$s;//cast to array
die(var_dump($a, $a['1'], $a[1], count($a)));
Run Code Online (Sandbox Code Playgroud)

我得到这个结果:

array (size=1)
  '1' => string 'xxx' (length=3) //<-- key 1 exists
null // $a['1'] yields null
null // $a[1] doesn't work either
int 1 // count shows there is 1 element in the array
Run Code Online (Sandbox Code Playgroud)

我期待这个结果:

array (size=1)
  '1' => string 'xxx' (length=3)
string 'xxx' (length=3) // $a['1'] should work
null
int 1
Run Code Online (Sandbox Code Playgroud)

我的问题:为什么我不能访问$a['1'],即使两个count和一个var_dump数组告诉我这个密钥存在?这是PHP中的错误,还是某种功能?

php json stdclass php-7

1
推荐指数
1
解决办法
647
查看次数

如何将对象转换为数组(Symfony)?

这就是我创建数组的方式fields

public function index($slug, Request $request, UserPasswordEncoderInterface $passwordEncoder)
  {
    $page = $this->getDoctrine()->getRepository(Pages::class)->findOneBy(['slug'=>$slug]);
    $fields =  (array) $page;
    return $this->render('mypage.html.twig', ['page' => $page, 'fields' => $fields]);
  }
Run Code Online (Sandbox Code Playgroud)

输出是:

array:3 [?
  "\x00App\Entity\Pages\x00id" => 3
  "\x00App\Entity\Pages\x00name" => "cat"
  "\x00App\Entity\Pages\x00color" => ""
]
Run Code Online (Sandbox Code Playgroud)

但我实际上需要这个结果:

array:3 [?
  "id" => 3
  "name" => "cat"
  "color" => ""
]
Run Code Online (Sandbox Code Playgroud)

根据我所做的更改的建议:

public function index($slug, Request $request, UserPasswordEncoderInterface $passwordEncoder)
  {
    $page = $this->getDoctrine()->getManager()->getRepository(Pages::class)->findOneBy(['slug'=>$slug]);
    $fields =  get_object_vars($page);
    return $this->render('mypage.html.twig', ['page' => $page, 'fields' => $fields]);
  }
Run Code Online (Sandbox Code Playgroud)

但这会输出一个空数组。

arrays oop object symfony doctrine-orm

1
推荐指数
1
解决办法
4770
查看次数