code-8
code-8

Reputation: 58642

Show data type of all the elements in the array

I have an array

array:23 [▼
  "cpe_mac" => "204492519985"
  "bandwidth_max_up" => 30000
  "bandwidth_max_down" => 50000
  "filter_icmp_inbound" => true
  "dmz_enabled" => false
  "dmz_host" => "http:\/\/ddd.com"
  "vlan_id" => 2
  "dns" => array:2 [▶]
  "xdns_mode" => 0
  "cfprofileid" => 11111
  "stub_response" => 0
  "acl_mode" => 1
  "portal_url" => "http:\/\/portal.com"
  "fullbandwidth_max_up" => 1000000
  "fullbandwidth_max_down" => 2000000
  "fullbandwidth_guaranty_up" => 300000
  "fullbandwidth_guaranty_down" => 400000
  "account_id" => 1000
  "location_id" => 3333
  "network_count" => 3
  "group_name" => "test_group"
  "vse_id" => 20
  "firewall_enabled" => false
]

I want to know the data type of each one of them, so I did this

$cpe_type = [];
foreach ($cpe as $k => $v) {
    $cpe_type[$k] = gettype($v);
}

I got as what I wanted

array:23 [▼
  "cpe_mac" => "string"
  "bandwidth_max_up" => "integer"
  "bandwidth_max_down" => "integer"
  "filter_icmp_inbound" => "boolean"
  "dmz_enabled" => "boolean"
  "dmz_host" => "string"
  "vlan_id" => "integer"
  "dns" => "array"
  "xdns_mode" => "integer"
  "cfprofileid" => "integer"
  "stub_response" => "integer"
  "acl_mode" => "integer"
  "portal_url" => "string"
  "fullbandwidth_max_up" => "integer"
  "fullbandwidth_max_down" => "integer"
  "fullbandwidth_guaranty_up" => "integer"
  "fullbandwidth_guaranty_down" => "integer"
  "account_id" => "integer"
  "location_id" => "integer"
  "network_count" => "integer"
  "group_name" => "string"
  "vse_id" => "integer"
  "firewall_enabled" => "boolean"
]

Is there any pre-made PHP functions that can provide me similar functionality?

Upvotes: 2

Views: 544

Answers (3)

Blue
Blue

Reputation: 22911

From a debugging standpoint, var_dump will show you a presentable output of the types and values of any object in PHP.

From a coding perspective, array_map is the best to transform an array. Simply provide it a callback, and it will transform all the values:

array_map('gettype', $array);

Here is a working phpplayground example.

Upvotes: 0

hek2mgl
hek2mgl

Reputation: 157947

You can use array_map:

var_dump(array_map('gettype', $array));

Upvotes: 2

nihylum
nihylum

Reputation: 528

ArrayMap with gettype as callback would be enough in your case.

That would be the closest native implementation of what you would like to achieve.

Upvotes: 2

Related Questions