php foreach(类->函数作为 $val)不返回数组

问题描述 投票:0回答:1

我有一个在 foreach 循环上使用的类函数。我可以返回一个值(即使它是一个数组),但不是关联数组

foreach ($this->myfunction($param1,$param2) as $val){
var_dump($val);
}

private function myFunction($param1,$param2){
  $returnArray = [];
  $settingArray = [];
  ...
  return $returnArray; //works but I need $settingArray
  return ['returnArray'=>$returnArray,'settingArray'=>$settingArray]; //fails: returns only $returnArray array (not associative array $val['returnArray'])
  return array($returnArray,$settingArray]; //fails: returns only $returnArray array
}

我可以在类中为此分配值,但我想避免这种情况,而且我也试图理解为什么会出现此错误。 谢谢你。

我想在 foreach $val 中获取 2 个数组

php foreach
1个回答
0
投票

您使用的私有函数有问题。每当您尝试返回关联数组时,请返回指定键及其值的数组。然后可以使用这些键来捕获值。检查下面我的演示:

<?php

  class MyClass{
    public $param1;
    public $param2;
    public function concatVal($param1, $param2){
        foreach ($this->myfunction($param1,$param2) as $val){
            var_dump($val);
        }
    }

    private function myFunction($param1, $param2){
      $status = "";
      $message = "";
      $returnArray = [];
      $settingArray = [];
      $newWord = "some new word";
      $newWordInMiddle = $param1." ".$newWord." ".$param2;
      $newWordInEnd = $param1." ".$param2." ".$newWord;
      $status = "success";
      $message = "done";

      //return Array
      $returnArray = [
        'status' => $status,
        'message' => $message
      ];

      //settings Array
      $settingArray = [
        'newWordInMiddle' => $newWordInMiddle,
        'newWordInEnd' => $newWordInEnd
      ];

      //returning associative array here
      return array(
        'returnArray' => $returnArray,
        'settingArray' => $settingArray,
      );

    }
  }

  $myObj = new MyClass;
  $myObj->concatVal("Hello", "There");
?>
© www.soinside.com 2019 - 2024. All rights reserved.