[REF] do not needlessly pass as reference, enforce valid param
authoreileen <emcnaughton@wikimedia.org>
Mon, 1 Feb 2021 01:40:17 +0000 (14:40 +1300)
committereileen <emcnaughton@wikimedia.org>
Mon, 1 Feb 2021 01:40:17 +0000 (14:40 +1300)
CRM/Utils/Array.php

index 5ecdb554d58b29b404cecba3f84c0c40ff8caf90..ec6ecffd2be86a5caa905040b68023aa7eb4b002 100644 (file)
@@ -61,20 +61,17 @@ class CRM_Utils_Array {
    * @return mixed
    *   The value of the key, or null if the key is not found.
    */
-  public static function retrieveValueRecursive(&$params, $key) {
-    if (!is_array($params)) {
-      return NULL;
-    }
-    elseif ($value = CRM_Utils_Array::value($key, $params)) {
-      return $value;
+  public static function retrieveValueRecursive(array $params, string $key) {
+    if (isset($params[$key])) {
+      return $params[$key];
     }
-    else {
-      foreach ($params as $subParam) {
-        if (is_array($subParam) &&
-          $value = self::retrieveValueRecursive($subParam, $key)
-        ) {
-          return $value;
-        }
+    foreach ($params as $subParam) {
+      if (is_array($subParam) &&
+        // @todo - this will mishandle values like 0 and false
+        // but it's a little scary to fix.
+        $value = self::retrieveValueRecursive($subParam, $key)
+      ) {
+        return $value;
       }
     }
     return NULL;