如何在 symfony 中对对象进行排序?
How can I sort an object in symfony?
这是"fields"
{#751 ▼
+"id": array:9 [▼
"fieldName" => "id"
"type" => "integer"
"scale" => 0
"length" => null
"unique" => true
"nullable" => false
"precision" => 0
"id" => true
"columnName" => "id"
]
+"username": array:8 [▼
"fieldName" => "username"
"type" => "string"
"scale" => 0
"length" => 25
"unique" => true
"nullable" => false
"precision" => 0
"columnName" => "username"
]
+"unique_id": array:8 [▼
"fieldName" => "unique_id"
"type" => "string"
"scale" => 0
"length" => 10
"unique" => true
"nullable" => false
"precision" => 0
"columnName" => "unique_id"
]
+"password": array:8 [▼
"fieldName" => "password"
"type" => "string"
"scale" => 0
"length" => 64
"unique" => false
"nullable" => false
"precision" => 0
"columnName" => "password"
]
+"email": array:8 [▼
"fieldName" => "email"
"type" => "string"
"scale" => 0
"length" => 191
"unique" => true
"nullable" => false
"precision" => 0
"columnName" => "email"
]
+"isActive": array:8 [▼
"fieldName" => "isActive"
"type" => "boolean"
"scale" => 0
"length" => null
"unique" => false
"nullable" => false
"precision" => 0
"columnName" => "is_active"
]
}
我希望用户名总是在开头,密码总是在结尾。
这是我的方法:
usort($fields, function ($a, $b) { if ($a['fieldName'] == 'username' || $b['fieldName'] == 'password') return -1;
elseif ($a['fieldName'] == 'password' || $b['fieldName'] == 'username') return 1;
else return 0;
});
但我收到一条错误消息:
Warning: usort() expects parameter 1 to be array, object given
usort的第一个参数应该是一个数组,$fields
是一个对象。一种选择是将其转换为数组,如:
$fields = (array)$fields;
然后传给usort:
usort($fields, function ($a, $b) {
if ($a['fieldName'] == 'username' || $b['fieldName'] == 'password') return -1;
elseif ($a['fieldName'] == 'password' || $b['fieldName'] == 'username') return 1;
else return 0;
});
这是"fields"
{#751 ▼
+"id": array:9 [▼
"fieldName" => "id"
"type" => "integer"
"scale" => 0
"length" => null
"unique" => true
"nullable" => false
"precision" => 0
"id" => true
"columnName" => "id"
]
+"username": array:8 [▼
"fieldName" => "username"
"type" => "string"
"scale" => 0
"length" => 25
"unique" => true
"nullable" => false
"precision" => 0
"columnName" => "username"
]
+"unique_id": array:8 [▼
"fieldName" => "unique_id"
"type" => "string"
"scale" => 0
"length" => 10
"unique" => true
"nullable" => false
"precision" => 0
"columnName" => "unique_id"
]
+"password": array:8 [▼
"fieldName" => "password"
"type" => "string"
"scale" => 0
"length" => 64
"unique" => false
"nullable" => false
"precision" => 0
"columnName" => "password"
]
+"email": array:8 [▼
"fieldName" => "email"
"type" => "string"
"scale" => 0
"length" => 191
"unique" => true
"nullable" => false
"precision" => 0
"columnName" => "email"
]
+"isActive": array:8 [▼
"fieldName" => "isActive"
"type" => "boolean"
"scale" => 0
"length" => null
"unique" => false
"nullable" => false
"precision" => 0
"columnName" => "is_active"
]
}
我希望用户名总是在开头,密码总是在结尾。
这是我的方法:
usort($fields, function ($a, $b) { if ($a['fieldName'] == 'username' || $b['fieldName'] == 'password') return -1;
elseif ($a['fieldName'] == 'password' || $b['fieldName'] == 'username') return 1;
else return 0;
});
但我收到一条错误消息:
Warning: usort() expects parameter 1 to be array, object given
usort的第一个参数应该是一个数组,$fields
是一个对象。一种选择是将其转换为数组,如:
$fields = (array)$fields;
然后传给usort:
usort($fields, function ($a, $b) {
if ($a['fieldName'] == 'username' || $b['fieldName'] == 'password') return -1;
elseif ($a['fieldName'] == 'password' || $b['fieldName'] == 'username') return 1;
else return 0;
});