Themosis\Validation\ValidationBuilder::isAssociative PHP Method

isAssociative() public method

Check if a given array is associative.
public isAssociative ( array $arr ) : boolean
$arr array
return boolean True if associative.
    public function isAssociative(array $arr)
    {
        if (empty($arr)) {
            return false;
        }
        return array_keys($arr) !== range(0, count($arr) - 1);
    }

Usage Example

Example #1
0
 /**
  * Validate the defined settings.
  *
  * @param mixed $values
  * @return array
  */
 public function validateSettings($values)
 {
     // No validation rules
     if (!isset($this->datas['rules']) || !is_array($this->datas['rules'])) {
         return $values;
     }
     // Null given
     if (is_null($values)) {
         return [];
     }
     $sanitized = [];
     foreach ($values as $setting => $value) {
         $rules = array_keys($this->datas['rules']);
         // 1 - Check if a rule exists
         if (in_array($setting, $rules)) {
             // 1.1 - Check for infinite settings.
             if (is_array($value) && $this->isInfinite($setting)) {
                 foreach ($value as $index => $row) {
                     if ($this->validator->isAssociative($row) && !empty($row)) {
                         foreach ($row as $infiniteSetting => $infiniteValue) {
                             // 1.1.1 - Check if a rule is defined for the infinite sub fields.
                             if (isset($this->datas['rules'][$setting][$infiniteSetting])) {
                                 $rule = $this->datas['rules'][$setting][$infiniteSetting];
                                 $sanitized[$setting][$index][$infiniteSetting] = $this->validator->single($infiniteValue, $rule);
                             } else {
                                 $sanitized[$setting][$index][$infiniteSetting] = $infiniteValue;
                             }
                         }
                     }
                 }
             } else {
                 // 1.2 - Apply rule to other settings.
                 $sanitized[$setting] = $this->validator->single($value, $this->datas['rules'][$setting]);
             }
         } else {
             // 2 - No rule, just set the default value.
             $sanitized[$setting] = $value;
         }
     }
     return $sanitized;
 }