在Java中,
我可以创建如下内容:
public class A {
private final SomeCustomClass[] nodes;
public A() {
//create new SomeCustomClass
node1 = new SomeCustomClass(100, 200);
//create the more SomeCustomClass as array
nodes = new SomeCustomClass[100]; //this is a array of type "SomeCustomClass"
//fill these nodes
for (int i = 0; i < 100; i++) {
nodes[i] = new SomeCustomClass(1, 5);
}
}
}
以下是否满足其PHP实现?我对Java的nodes = new SomeCustomClass[100]
部分感到困惑。
class A {
private $node1;
private $nodes;
public function __construct() {
//create new SomeCustomClass
$this->node1 = new SomeCustomClass(100, 200);
//create the more SomeCustomClass as array
$this->nodes = new ArrayObject();
//fill these SomeCustomClass
for ($i = 0; $i < 100; $i++) {
$this->nodes[$i] = new SomeCustomClass(1, 5);
}
}
}
我有SomeCustomClass
这是我自己定义的类。
答案 0 :(得分:0)
你可以做这样的事情,可能是更好的方式,但现在,我只能考虑这个。
class Customer
{
var $item;
function __construct($arg){
$this->item = $arg;
$customer[] = $this->item;
}
}
$customer = new Customer(1234);
var_dump($customer);
?>
输出
object(Customer)[1] public'itet'=&gt; int 1234
另一个是实现收集可能就像
class Collection
{
private $items = array();
public function addItem($obj, $key = null) {
if ($key == null) {
$this->items[] = $obj;
}
else {
if (isset($this->items[$key])) {
throw new KeyHasUseException("Key $key already in use.");
}
else {
$this->items[$key] = $obj;
}
}
}
public function deleteItem($key) {
if (isset($this->items[$key])) {
unset($this->items[$key]);
}
else {
throw new KeyInvalidException("Invalid key $key.");
}
}
public function getItem($key) {
if (isset($this->items[$key])) {
return $this->items[$key];
}
else {
throw new KeyInvalidException("Invalid key $key.");
}
}
}
class Salut
{
private $name;
private $number;
public function __construct($name, $number) {
$this->name = $name;
$this->number = $number;
}
}
$c = new Collection();
$c->addItem(new Salut("Steve", 14), "steve");
$c->addItem(new Salut("Ed", 37), "ed");
$c->addItem(new Salut("Bob", 49), "bob");
try {
$c->getItem("steve");
}
catch (KeyInvalidException $e) {
print "The collection doesn't contain Steve.";
}
var_dump($c);
输出
object(Collection)[1] private'itements'=&gt; 数组(大小= 3) 'steve'=&gt; 对象(萨吕)[2] 私人'名字'=&gt;字符串'Steve'(长度= 5) 私人'号码'=&gt; int 14 'ed'=&gt; 对象(萨吕)[3] 私人'名字'=&gt;字符串'Ed'(长度= 2) 私人'号码'=&gt; int 37 'bob'=&gt; 对象(萨吕)[4] 私人'名字'=&gt;字符串'Bob'(长度= 3) 私人'号码'=&gt;第49页
答案 1 :(得分:0)
通常在PHP中你会创建一个像:
这样的数组$this->nodes = array();
您可以使用以下代码将其余代码添加到数组的末尾:
$this->nodes[] = new SomeCustomClass(1, 5);
答案 2 :(得分:0)
我想我遇到了你的问题。在PHP中编程时,您不能认为Java方式,因为它们在类型系统上是不同的。
虽然Java是statically typed,但PHP是dynamically typed。他们是两个不同的世界。
在Java中,在编译时检查变量的类型,在运行时检查PHP中的所有内容(特别是在使用PHP类型检查时)。
另外,Java中的数组数据结构与数组PHP数据结构不同。
在java中,数组是同类的,即当你输入
时 int a = new int[10]
此数组的所有值必须是int
的类型。
然而,在PHP中,数组(这是一种类似哈希的结构,可以作为多个数据结构合并在一起)是异构的。这意味着可以包含所有类型。
$array = [1, "a", new stdClass(), []];
将其视为Object
的Java数组。所以你的实现在语义上是正确的。 (我本来会使用原生数组)