Php If Array in Array

时间:2016-06-02 10:25:10

标签: php arrays if-statement

我正在尝试在我的数组中构建一个if条件,目前看起来像这样但不起作用。

import threading

VAR = 0

def function():
    while True:
        global VAR
        while VAR == VAR:
            print VAR
            time.sleep(0.5)

THR = threading.Thread(target=function)
THR.start()
time.sleep(1)
function().VAR = 4 # this doesn't affect the output, only adds a seemingly random whitespace before it
time.sleep(2)
THR.VAR = 5 # nothing changes

基本上hasma返回true或false,如果为true,则应添加上述内容,如果为false,则返回(add)no。

3 个答案:

答案 0 :(得分:0)

您可以尝试以下方法:

protected $menuItems = [
    'items' => [
        [
            'title' => 'test',
        ]
    ]
]

if($this->hasma())
    $menuItems['items'][] = ['title' => 'Ma']

查看代码时,我注意到您使用了关键字" protected"这涉及到你在声明中硬编码了你的类属性的值。 相反,您应该在构造方法中初始化所有属性。 代码如下所示:

 <?php

class A
{

    protected $menuItems;

    function __construct()
    {
        $this->menuItems = [
            'items' => [
                ['title' => 'test']
            ]
        ];

        if($this->hasma())
            $menuItems['items'][] = ['title' => 'Ma'];
    }
}

?>

答案 1 :(得分:0)

你做不到。在构造函数中构建该数组。如果以这种方式构建数组,则在对象被安装时调用hasma方法。 所以做这样的事情:

function __construct(){
  $this->menuItems=[['title' =>'test']];
  if($this->hasma())
   $this->menuItems[1]=['title'=>'Ma'];
}

答案 2 :(得分:0)

在声明类属性时,不能使用 $ this 。但是,您可以执行以下操作:

class Test {

    protected $menuItems;

    function hasma() {
        return true;
    }

    function __construct() {
        $this->menuItems = [
        'items' => [
                [
                    'title' => 'test',
                ],
                $this->hasma() ? [
                    'title' => 'Ma',
                ] : null,
            ],
        ];
    }

    function getMenu() {
        return $this->menuItems;
    }
}

$test = new Test();

print_r($test->getMenu());